A little bit of everything

情報系大学院生の備忘録

【Java】匿名クラスから親クラスのフィールドを参照する方法

匿名クラスの中から、親クラス名.this でアクセス可能。

public class OuterClass {
    //アウタークラスのフィールド
    private String str = "";
    
    //インナークラスの定義
    private class InnerClass{
        //インナークラスのフィールド
        private String str = "";
        
        //アウタークラスのフィールド操作&参照
        public void handleOuterField(){
            OuterClass.this.str = "Outer class's field";  //← 親クラス名.this.フィールド名でアクセス可能
            System.out.println(OuterClass.this.str);
        }
        
        //インナークラスのフィールド操作&参照
        public void handleInnerField(){
            this.str = "Inner class's field";           
            System.out.println(this.str);
        }
    }
    
    public void print(){
        InnerClass inner = new InnerClass();
        inner.handleOuterField();  //"Outer class's field" が表示される
        inner.handleInnerField();   //"Inner class's field" が表示される
    }

    public static void main(String[] args) {
        new OuterClass().print();;
    }
}