6

重複の可能性:
Java内部クラスと静的ネストクラス

静的内部クラスのインスタンスは、それを囲むクラスのインスタンスメンバーにアクセスできませんが、非静的内部クラスのインスタンスはアクセスできます。これが構文の違いの意味です。内部クラスを静的であると宣言するかどうかによって、プログラムの構文が正しいかどうかが決まるためです。

しかし、Java構文の一部ではない他の違いはありますか?クラスAが最上位クラスであり、クラスBがAの内部クラスであるとします。B内のAのインスタンスメンバーにアクセスしない場合は、Bを静的であると宣言する必要があります。しかし、私はそうする必要がないので、Bを非静的であると宣言することができ、コンパイルエラーは発生しません。したがって、この場合、おそらく生成されたバイトコードに違いはありますか、それとも実行時の違いはありますか?

ありがとう!

4

1 に答える 1

6

違いはそれよりも大きいです。static内部クラスは、クラスのインスタンスがなくても、外部から作成できますがclass、非静的クラスは作成できません。

static内部クラスは包含クラスのインスタンスにバインドされていませんが、非インスタンスにバインドされているため、包含クラスメンバーにアクセスできるという事実はこの結果staticです。

于 2012-05-19T10:39:56.797 に答える