Sobes.tech
Junior — Middle

Kaip galima pakeisti objekto privačios kintamosios vidinę būseną nesinaudojant viešaisiais metodais kaip set?

sobes.tech AI

Atsakymas iš 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-кодом.