Встречается на собеседованиях • сегодня
Как изменить значение приватной переменной объекта без сеттеров
В Java можно изменить приватную переменную через рефлексию, обойдя инкапсуляцию. Пример:
java
import java.lang.reflect.Field;
class MyClass {
private String secret = "original";
}
public class Main {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Field field = MyClass.class.getDeclaredField("secret");
field.setAccessible(true); // снимаем проверку доступа
field.set(obj, "hacked"); // изменяем значение
System.out.println(field.get(obj)); // выведет "hacked"
}
}Важные моменты:
- Нужно использовать
setAccessible(true)для обхода проверки доступа - Может выбросить
NoSuchFieldExceptionесли поле не найдено - Не работает при наличии SecurityManager с ограничениями
- Нарушает принципы инкапсуляции, использовать только в крайних случаях

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы