Sobes.tech
Junior — Middle
88

Kuidas saab muuta objekti privaatse muutuja sisemist olekut, mitte kasutades avalikke meetodeid nagu set?

Ettevõtted, kust küsiti
Драйв Клик

Vastus AI-lt

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