https://qiita.com/hp_kj/items/dd533d98f9d065bd0301
thisについて調べたところ、エンクロージングインスタンスという言葉が出てきたので調べてみた。
JavaA2Zによると
内部クラスにとっての「外部クラスのインスタンス」。
内部クラスのインスタンスは、「外部クラスのインスタンスの中に含まれる」という特殊なインスタンスとなる。そのため、内部クラスのインスタンスを作るためには、必ず外部クラスのインスタンスが必要となる。
その「外部クラスのインスタンス」が「エンクロージングインスタンス」である。内部クラスのインスタンスを「enclosing」つまり「囲い込む」インスタンスである。
「外部クラスのインスタンス」が「エンクロージングインスタンス」
まずこれが結論のようです。そして
意味としては
内部クラスのインスタンスを「enclosing」つまり「囲い込む」インスタンスである。
ということです。前回のコードに当てはめると、
public class Main {
public static void main(String []args) {
Outer o = new Outer();///1-1
Outer.Inner oi = o.new Inner();///2-1
oi.innerPrint();
}
public static class Outer{///1
int outerhp = 10;
public class Inner{///2
public void innerPrint() {
System.out.println(Outer.this.outerhp);
}
}
}
}
1-1で外部クラス1(Outer)のインスタンスを作っています。
そして2-1で外部クラスのインスタンスの中に含まれる内部クラス2(Inner)のインスタンスを作成しています。