ホームページ  >  記事  >  Java  >  質問形式に焦点を当て、記事に基づいて考えられるタイトルをいくつか示します。 直接的かつ簡潔: * Java ではなぜ非静的内部クラスに静的メソッドを持てないのでしょうか? * 静的メソッドはいいえ

質問形式に焦点を当て、記事に基づいて考えられるタイトルをいくつか示します。 直接的かつ簡潔: * Java ではなぜ非静的内部クラスに静的メソッドを持てないのでしょうか? * 静的メソッドはいいえ

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-27 13:42:02377ブラウズ

Here are some potential titles based on your article, focusing on the question format: 

Direct and concise:

* Why Can't Non-Static Inner Classes Have Static Methods in Java? 
* Static Methods in Non-Static Inner Classes: A Java Limitation Solved in Jav

非静的内部クラスの静的メソッド: Java と 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>

この場合、内部クラスは静的に宣言されています。つまり、内部クラスは外部クラスの特定のインスタンスにバインドされていません。クラス。その結果、静的メソッドは特定のインスタンスに関連付けられないため、内部クラス内で定義できます。

Java 16 以降: 制限の削除

In Java 16 では、この制限は解除されました。非静的内部クラスで静的メソッドを宣言できるようになりました。ただし、内部クラスの静的メソッドは外側のクラスとクラス名を共有するため、名前の競合が発生する可能性があるため、その際は注意が必要です。

以上が質問形式に焦点を当て、記事に基づいて考えられるタイトルをいくつか示します。 直接的かつ簡潔: * Java ではなぜ非静的内部クラスに静的メソッドを持てないのでしょうか? * 静的メソッドはいいえの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。