Sobes.tech
Back to questions
Junior — Middle
66

Каким образом можно через рефлексию обратиться к закрытым полям объекта?

Companies where asked
ООО СКВАД

Answer from AI

sobes.tech AI

В Java через рефлексию можно получить доступ к закрытым (private) полям объекта, изменив их доступность с помощью метода setAccessible(true). Это позволяет читать и изменять значения таких полей.

Пример:

import java.lang.reflect.Field;

public class Example {
    private String secret = "hidden";

    public static void main(String[] args) throws Exception {
        Example obj = new Example();

        Field field = Example.class.getDeclaredField("secret");
        field.setAccessible(true); // снимаем ограничение доступа

        // Читаем значение закрытого поля
        String value = (String) field.get(obj);
        System.out.println("Secret value: " + value);

        // Изменяем значение закрытого поля
        field.set(obj, "revealed");
        System.out.println("New secret value: " + field.get(obj));
    }
}

Важно помнить, что использование setAccessible(true) может нарушать инкапсуляцию и должно применяться с осторожностью.