Есть такой класс:
public class CreatorInit extends Creator {
String direct;
public CreatorInit(String direct) {
this.direct = direct;
}
@Override
public Command factoryMethod() {
Object a = null;
try {
Class clazz = Class.forName(direct);
a = clazz.newInstance();
return (Command) a;
}
catch (ClassNotFoundException e) {System.out.print("ClassNotFoundException");}
catch (InstantiationException e) {System.out.print("InstantiationException");}
catch (IllegalAccessException e) {System.out.print("IllegalAccessException");}
return (Command) a;
}
}
При создании объекта этого класса возникают следующие строки в консоли:
C:\Users\ddyak\IdeaProjects\test_project>javac -sourcepath ./src -d bin
src/ru/nsu/yakovlev/LogoWorld/Main.java
Note: .\src\ru\nsu\yakovlev\LogoWorld\factory\creators\CreatorInit.java uses
or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
C:\Users\ddyak\IdeaProjects\test_project>javac -Xlint:deprecation -
sourcepath ./src -d bin src/ru/nsu/yakovlev/LogoWorld/Main.java
.\src\ru\nsu\yakovlev\LogoWorld\factory\creators\CreatorInit.java:14:
warning: [deprecation] newInstance() in Class has been deprecated
a = clazz.newInstance();
^
where T is a type-variable:
T extends Object declared in class Class
1 warning
Как убрать предупреждение или его проигнорировать?
Согласно документации:
данный метод устарел, так как может кинуть любое исключение произошедшее в конструкторе без параметров, включая проверяемые. Использование данного метода фактически позволяет обойти проверку исключений во время компиляции. Метод Constructor.newInstance позволяет избежать этой проблемы оборачивая любое исключение внутри конструктора в (проверяемое) InvocationTargetException.
Вызов
clazz.newInstance()
может быть заменен на
clazz.getDeclaredConstructor().newInstance()
Таким образом в коде вопроса необходимо заменить
a = clazz.newInstance();
на
a = clazz.getDeclaredConstructor().newInstance();
Просто добавьте на метод эту анотацию
@SupressWarning("deprication")
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники