У меня есть локальный класс, объявленный в методе, поля которого объявлены как закрытые. Тем не менее, я все еще могу получить к ним доступ непосредственно из тела прилагаемого метода - почему это?Модификаторы контроля доступа в местных классах - почему они не работают?
В качестве побочного примечания я объявлял все поля в анонимном классе приватными, но действительно ли есть какая-либо польза в этом? Может ли им что-нибудь получить?
Edit: пример кода
public void myMethod() {
class myException extends SomeOtherException{
private boolean Bool;
public Boolean getBool() { return this.Bool; }
public myException() { //constructor stuff }
}
try {
Thing.setHandler(new HandlingClass() {
private String myString; //What is the point in making these private?
... other methods in anonymous class ...
}
... more code ...
} catch (myException e) {
... e.Bool //Can be accessed. Why?
}
}
Пожалуйста, добавьте код. – Fildor
Выполнение 'myString' ** private не предназначено **; поведение отражения немного отличается (если установлен SecurityManager). Разумеется, вы можете сделать 'new HandlingClass() {...} .myString' –