JAVA Как получить заранее неизвестный класс и его метод? Всем привет. Допустим, у меня есть куча классов разных типов, но реализующих похожий функционал, и теперь нужен класс, который бы получал экземпляр одного из уже описанного класса (заранее неизвестно какого типа) и мог вызывать его методы. Что лучше использовать для реализации подобной логики?

21 Авг 2019 в 07:06
294 +1
0
Ответы
1

Для реализации подобной логики в Java можно использовать рефлексию. Рефлексия позволяет работать с классами и объектами во время выполнения программы, получая информацию о классах, их методах и полях, создавая новые экземпляры, вызывая методы и изменяя значения полей.

Для получения экземпляра неизвестного класса можно использовать метод Class.forName(), который позволяет загружать классы по имени. Далее можно создать экземпляр полученного класса с помощью метода newInstance() или вызвать статический метод из неизвестного класса методом invoke().

Пример:

public class Main {
public static void main(String[] args) {
try {
String className = "com.example.SomeClass";
Class<?> clazz = Class.forName(className);
Object instance = clazz.newInstance();
// Вызов метода
Method method = clazz.getMethod("someMethod");
method.invoke(instance);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
e.printStackTrace();
}
}
}

Важно помнить, что при использовании рефлексии нужно быть осторожным, так как это может привести к ошибкам во время выполнения программы и нарушению инкапсуляции.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир