Рефлексия — это основной механизм для динамического создания объектов во время выполнения в Java. Этот подход позволяет тебе создавать экземпляры классов, не зная их на этапе компиляции.
Есть два главных способа динамически создавать объекты:
Class.newInstance() - Вызывает конструктор без параметров классаConstructor.newInstance() - Даёт больше гибкости, позволяя передавать аргументы конструкторуЭтот метод проще, но имеет ограничения:
Class<?> clazz = Class.forName("com.example.MyClass");
Object obj = clazz.newInstance();
Примечание: Этот метод работает только с конструкторами без параметров и считается устаревшим.
Этот метод более мощный и современный:
Class<?> clazz = Class.forName("com.example.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, int.class);
Object obj = constructor.newInstance("param1", 42);
Он позволяет тебе:
Учитывай, что рефлексия может бросать проверяемые исключения вроде ClassNotFoundException и InstantiationException, которые требуют правильной обработки ошибок. Кроме того, рефлексия даёт накладные расходы на производительность по сравнению с прямым созданием экземпляров, поэтому используй её разумно в производительно-критичном коде.
Метод Class.newInstance() может принимать аргументы конструктора, что делает его более гибким, чем Constructor.newInstance() для динамического создания объектов.
Новый — ещё не проверен сообществом
Вы