Java 8 では、インターフェースで静的メソッドがサポートされるようになりました。さらに、具体的なインスタンス メソッドは持つことができますが、インスタンス フィールドは持てません。
以前の Java バージョンでは、次の理由により、インターフェースに静的メソッドを含めることができませんでした。
静的メソッドは使用できませんこれらはコンパイル時に解決されるため、オーバーライドされます。動的ディスパッチは、コンパイラがオブジェクトの具体的な型を判断できないため、呼び出すメソッドを解決できない場合に、インスタンス メソッドに使用されます。ただし、静的メソッドは既知のクラスを必要とするため、静的に解決でき、動的ディスパッチが不要になります。
言い換えると、スーパークラスとサブクラスの両方に同じシグネチャを持つ静的メソッドがある場合、サブクラスのメソッドは常に最初に呼び出され、スーパークラスのメソッドをオーバーライドします。ただし、静的メソッドの目的のバージョンを含むクラスをいつでも指定できるため、これは概念的に冗長です。
コンストラクターのようなメソッドを強制することに関する追加の懸念についてIXMLizable の場合は、次の点を考慮してください:
以上がJava 8 より前は Java インターフェイスに静的メソッドがなかったのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。