Есть такой класс:
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")
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не получается открыть файл в программеУже открывал и как в языке Си,через адрес файла указывал, по разному вообщем
Прямоугольную комнату размерами M на N (сначала по горизонтали, а потом по вертикали) замостили треугольными плитками и их пронумеровали,...
Есть код с функциямиЕсть ли какой-либо способ узнать очередность выполнения этих функций? Т