Junior — Middle
92
Come si può modificare lo stato interno di una variabile privata di un oggetto senza usare metodi pubblici come set?
Le aziende dove è stato chiesto
Драйв Клик
Risposta dell'AI
sobes.tech AI
Чтобы изменить внутреннее состояние приватной переменной объекта без использования публичных сеттеров, можно применить рефлексию через класс java.lang.reflect.Field.
Пример:
import java.lang.reflect.Field;
class MyClass {
private int secret = 42;
}
MyClass obj = new MyClass();
Field field = MyClass.class.getDeclaredField("secret");
field.setAccessible(true); // снимаем ограничение доступа
field.setInt(obj, 100); // изменяем значение
Такой подход позволяет изменить приватные поля, но нарушает инкапсуляцию и должен использоваться с осторожностью, например, в тестах или при работе с legacy-кодом.