Java の静的インターフェイス メソッドの再考
従来、Java インターフェイス内で静的メソッドを定義することは禁止されていました。ただし、Java 8 ではこの制限が削除され、インターフェイスが静的インスタンス メソッドと具象インスタンス メソッドの両方を持つことができるようになりました。この記事では、以前の禁止の背後にある技術的な理由を詳しく掘り下げ、現在の許可の理論的根拠を明確にします。
インターフェイス内の静的メソッド
当初、静的メソッドはインターフェイスに含まれていました。インターフェースは優先度の高い言語変更とはみなされませんでした。これらを Java 7 に追加するというその後の提案は、予期せぬ複雑さのため断念されました。ただし、Java 8 のラムダ式サポートの登場により、静的インターフェイス メソッドがオーバーライド可能なインスタンス メソッドとともに導入されました。
静的メソッドのオーバーライド
インターフェイスは静的メソッドが追加されましたが、オーバーライドすることはできません。その理由は次のとおりです。
コンストラクター インターフェイス
Java 言語ではインターフェイス内でコンストラクターのようなメソッドを強制することは禁止されていますが、具体的なクラスを使用して同様の機能を実現することは可能です。新しいインスタンスを作成するときに具象型の明示的な名前付けを要求することにより、コンパイラーはクラスが目的の要件に準拠していることを確認できます。
結論
Java インターフェースの静的メソッドクラスレベルの機能とユーティリティを定義するための便利なメカニズムを提供します。ただし、静的メソッド解決の性質により、サブクラス内での静的メソッドのオーバーライドはサポートされていません。インターフェイス内でコンストラクターのようなメソッドを強制することは、魅力的ではありますが、実装間の一貫性を確保するには適切な設計パターンではありません。
以上がJava インターフェイスで静的メソッドをオーバーライドできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。