2

そのため、最初のシナリオではコンパイラ エラーがスローされ、2 番目のシナリオではスローされない理由を説明するように求められました。

class Outer { 

  public Outer() {

    Inner i = new Inner();        

    class Inner {

    } 

  }

}

他のシナリオは次のとおりです。

class Outer {

  public Boss() {
    Inner i = new Inner();
  }

  class Inner {
  }

}

Inner クラスがスタックにプッシュされる前に Inner クラスのオブジェクトを作成できないため、最初のシナリオではコンパイラ エラーがスローされることをうまく説明できました。これについて詳しく説明するか、私の理解を修正してください。

私の主な問題は、Inner クラスのコードが 2 番目のシナリオのコンストラクターの後にあるにもかかわらず、Inner オブジェクトを作成できる理由を説明できないことでした。この質問に対する最良の答えは、内部クラスがメモリ内のどこに格納されているかを知ることだと思います。誰かがしっかりとした説明を提供できることを願っています。ありがとうございました。

4

1 に答える 1