非静的内部クラスで静的メソッドが許可されない理由
Java 16 より前のバージョンでは、内部クラス内で静的メソッドを定義しようとしました非静的内部クラスではコンパイラ エラーが発生します。この制限は、内部クラスの固有の性質から生じます。
制限の理由
非静的内部クラスは、それを囲むクラスのインスタンスに関連付けられます。そのため、インスタンス化する前に、外部クラスのインスタンスが存在する必要があります。この依存関係は、静的メソッドには外部クラスのインスタンスとの必要なコンテキスト関連が欠落しているため、非静的内部クラスは静的メソッドを所有できないことを意味します。
静的内部クラス
対照的に、静的内部クラスは、それを囲んでいるクラスのインスタンスに関連付けられていません。これらは独立して存在でき、外側のクラスをインスタンス化する必要はありません。この独立性により、静的内部クラスは、周囲のクラスの特定のインスタンスに関連付けられていないため、静的メソッドを定義できます。
Java 16 以降
Java 16 では、この制限に変更します。内部クラスは、静的か非静的かに関係なく、静的メソッドを定義できるようになりました。この変更は、内部クラス内の静的メソッドが必ずしも以前と同じ概念的な問題を引き起こすわけではないという認識の高まりを反映しています。
結論
Java 16 より前では、非静的内部クラスでの静的メソッドの定義は、非静的内部クラスとそれを囲むクラスのインスタンス間の密結合に基づいていました。 Java 16 の導入により、この制限が解除され、内部クラス設計の柔軟性が向上しました。
以上がバージョン 16 より前の Java では、非静的内部クラスに静的メソッドを含めることができなかったのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。