Reflection в Java: описание, примеры, применение
Reflection в Java - это возможность программы получать доступ к своей структуре и данным во время выполнения. Используя Reflection, можно получить информацию о классах, их полях, методах, конструкторах и прочих элементах; а также создавать новые объекты, вызывать методы, изменять значения полей во время выполнения программы.
Примеры использования Reflection в Java:
1. Получение информации о классе:
Class> clazz = MyClass.class;
System.out.println("Class: " + clazz.getName());
2. Получение информации о полях класса:
Class> clazz = MyClass.class;
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
System.out.println("Field name: " + field.getName());
System.out.println("Field type: " + field.getType());
}
3. Создание объекта класса:
Class> clazz = MyClass.class;
Object instance = clazz.newInstance();
4. Вызов метода класса:
Class> clazz = MyClass.class;
Method method = clazz.getDeclaredMethod("myMethod");
method.setAccessible(true); // установить доступ
method.invoke(instance);
5. Изменение значения поля класса:
Class> clazz = MyClass.class;
Field field = clazz.getDeclaredField("myField");
field.setAccessible(true);
field.set(instance, "new value");
Вместе с тем, следует помнить, что Reflection может ухудшить производительность вашей программы, поэтому используйте его с умом и только там, где это действительно необходимо.