J'ai une classe locale déclarée dans une méthode, dont les champs sont déclarés comme étant privés. Cependant, je suis toujours en mesure d'y accéder directement à partir du corps de la méthode englobante - pourquoi est-ce?Modificateurs de contrôle d'accès dans les classes locales - pourquoi ne fonctionnent-ils pas?
En note secondaire, j'ai déclaré que tous les champs d'une classe anonyme étaient privés, mais y a-t-il réellement un avantage à le faire? Est-ce que quelque chose pourrait y accéder?
Edit: exemple de code
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?
}
}
S'il vous plaît ajouter du code. – Fildor
Faire 'myString' ** private ne sert à rien **; le comportement de la réflexion est légèrement différent (si un SecurityManager est installé). Rappelez-vous que vous pouvez faire 'new HandlingClass() {...} .myString' –