次のことを理解していません。「shorthand」を使用して内部クラスのインスタンスを作成する場合、明示的なインスタンスを作成していなくても、外部クラスにアクセスするのは悪い考えですか?
たとえば、次のコードについて考えてみます。
class OuterClass
{
int i;
OuterClass() { i = 2; }
class InnerClass
{
int get_parent_i() { return (OuterClass.this.i); }
}
}
以下は、期待される結果(2)をコンパイルして返します。
OuterClass.InnerClass ic = new OuterClass().new InnerClass();
System.out.println(ic.get_parent_i());
私の混乱は、InnerClassオブジェクトをインスタンス化するためにOuterClassオブジェクトを明示的に作成しなかったという事実に起因していますが、オブジェクトは存在しているように見えます。誰かが何が起こっているのか教えてもらえますか?何らかの理由でファントムインスタンスにアクセスするか忘れる必要がある場合はどうすればよいですか?
どうもありがとう!