Ich habe eine lokale Klasse in einer Methode deklariert, deren Felder als privat deklariert sind. Ich bin jedoch immer noch in der Lage, direkt vom Körper der umschließenden Methode darauf zuzugreifen - warum ist das?Zugriffskontrollmodifikatoren in lokalen Klassen - warum funktionieren sie nicht?
Als Nebenbemerkung habe ich alle Felder in einer anonymen Klasse als privat deklariert, aber gibt es tatsächlich einen Vorteil dabei? Konnte irgendetwas auf sie zugreifen?
Edit: Codebeispiel
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?
}
}
Bitte fügen Sie Code. – Fildor
Making 'myString' ** private dient keinen Zweck **; das Reflexionsverhalten ist etwas anders (wenn ein SecurityManager installiert ist). Beachten Sie, dass Sie 'new HandlingClass() {...} .myString' machen können –