Sobes.tech
Junior — Middle

Kuidas pääseda ligi objekti privaatsetele omadustele Reflection API abil?

sobes.tech AI

Vastus AI-lt

Для доступа к приватным полям объекта через Reflection API в Java нужно выполнить следующие шаги:

  1. Получить объект Field нужного поля через метод Class.getDeclaredField(String name).
  2. Вызвать field.setAccessible(true), чтобы снять ограничения доступа.
  3. Использовать методы field.get(Object obj) или field.set(Object obj, Object value) для чтения или записи значения.

Пример:

import java.lang.reflect.Field;

class MyClass {
    private String secret = "hidden";
}

MyClass obj = new MyClass();
Field field = MyClass.class.getDeclaredField("secret");
field.setAccessible(true); // снимаем ограничения доступа
String value = (String) field.get(obj);
System.out.println(value); // выведет "hidden"

field.set(obj, "new value");
System.out.println(field.get(obj)); // выведет "new value"