Reflection — это механизм в Java, который позволяет вашему коду исследовать и изменять поведение классов, методов и объектов во время выполнения, даже если их структуры неизвестны заранее.
С помощью Reflection можно:
▪️ Узнавать информацию о классе (методы, поля, конструкторы, модификаторы).
▪️ Вызывать методы и обращаться к полям объекта, даже если они private.
▪️ Создавать новые объекты динамически (без явного указания конструктора).
Пример:
import java.lang.reflect.Method;
public class ReflectionExample {
public static void main(String[] args) throws Exception {
// Класс, который будем исследовать
Class<?> clazz = Class.forName("java.lang.String");
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.println("Метод: " + method.getName());
}
}
}
⚠️ Важно:
- Reflection делает код менее безопасным и сложным для понимания.
- Это может снижать производительность программы. Используйте его только при необходимости.
- В современных приложениях, например, с Spring, Reflection часто используется для Dependency Injection или работы с аннотациями.