ホームページ >Java >&#&チュートリアル >バージョン 16 より前の Java では、非静的内部クラスで静的メソッドを定義できないのはなぜですか?
Java 16 より前のバージョンでは、静的メソッドを定義しようとしています非静的内部クラス内で使用するとコンパイラ エラーが発生します。たとえば、次のコード スニペットは失敗します。
<code class="java">public class Foo { class Bar { static void method() {} // Compiler error } }</code>
非静的内部クラスは、それを囲んでいるクラスのインスタンスに関連付けられています。内部クラスのすべてのインスタンスには、それを囲んでいるクラス インスタンスへの非表示の参照があります。これは、内部クラス内の静的メソッドは、外側のクラスへの参照を維持する必要があることを意味します。これは、ルールに違反します。
内部クラス内で静的メソッドを定義するには、次のようにします。内部クラスを静的として宣言する必要があります。静的内部クラスには、それを囲んでいるクラスのインスタンスへの暗黙的な参照がありません。その結果、静的メソッドを定義できます:
<code class="java">public class Foo { static class Bar { // now static static void method() {} } }</code>
以上がバージョン 16 より前の Java では、非静的内部クラスで静的メソッドを定義できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。