Tooling Средний

Замените устаревший Class.newInstance() явным поиском и вызовом конструктора.

✕ Deprecated Class.newInstance()
Plugin plugin = pluginClass.newInstance();
✓ Constructor reflection
Plugin plugin = pluginClass
        .getDeclaredConstructor()
        .newInstance();
Заметили проблему в этом коде? Сообщите нам.

Поддерживаемый API

Устраняет использование устаревшего Class.newInstance().

🎯

Явный конструктор

Запрашиваемая сигнатура видима и может принимать аргументы.

🛡

Честные ошибки

Исключения конструктора представлены через InvocationTargetException.

Старый подход
Class.newInstance()
Современный подход
Явный поиск конструктора
Начиная с JDK
9
Сложность
Средний
От Class.newInstance() к рефлексии конструктора
Доступно

Рекомендуется с момента признания Class.newInstance() устаревшим в JDK 9 (сентябрь 2017 года).

Class.newInstance() признан устаревшим, поскольку позволяет обойти проверку во время компиляции исключений, выбрасываемых конструктором, и поддерживает только конструктор без аргументов. Явный поиск Constructor делает выбранную сигнатуру видимой и сообщает об ошибках рефлексивного вызова с помощью соответствующих исключений рефлексии. Правила модулей и доступа продолжают действовать; этот шаблон не рекомендует обходить инкапсуляцию.