Sobes.tech
Junior — Middle
91

როგორ შეიძლება შეიცვალოს ობიექტის პირადი ცვლადის შიდა მდგომარეობა, არ გამოიყენოს საჯარო მეთოდები, როგორიცაა set?

კომპანიებმა სადაც სთხოვეს
Драйв Клик

პასუხი 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-кодом.