メソッドで宣言されたローカルクラスがあり、そのフィールドはプライベートとして宣言されています。しかし、私は引き続き封筒法の本体から直接それらにアクセスすることができます - これはなぜですか?ローカルクラスのアクセス制御修飾子 - なぜ機能しないのですか?
私は匿名クラスのすべてのフィールドを非公開として宣言しましたが、実際にこれを行う際に何らかの利点がありますか?何かそれらにアクセスできますか?
編集:それはネストされたクラスと同様にアクセスされるので、それがアクセスされた理由コードの例
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' **をプライベートにする目的はありません**;反射動作はわずかに異なります(SecurityManagerがインストールされている場合)。あなたが '新しいHandlingClass(){...} .myString' –