ホームページ > Java > &#&チュートリアル > Java 8 より前の Java インターフェイスでは静的メソッドが許可されなかったのはなぜですか?

Java 8 より前の Java インターフェイスでは静的メソッドが許可されなかったのはなぜですか?

DDD
リリース: 2025-01-05 02:24:39
オリジナル
795 人が閲覧しました

Why Were Static Methods Not Allowed in Java Interfaces Before Java 8?

Java インターフェイスで静的メソッドを定義できないのはなぜですか?

gt;

Java 8 以降では、静的メソッドはインターフェイスで許可されます。以前のバージョンではこれは当てはまらなかったため、多くのプログラマはなぜなのか疑問に思っていました。

Java 8 と静的インターフェイス メソッド

Java 8 では、オーバーライドとともに静的インターフェイス メソッドが導入されました。 -able デフォルト実装のインスタンス メソッド。インターフェイスに静的メソッドを含めることができるようになりましたが、インスタンス フィールドを含めることはできません。

静的メソッドとオーバーライド

静的メソッドはコンパイル時に解決されるため、オーバーライドできません。 。これは、コンパイラがオブジェクト インスタンスを参照せずに、呼び出す正確なクラスとメソッドを決定できることを意味します。コンパイラは実行時にオブジェクトの正確な型を決定できないため、インスタンス メソッドの動的なディスパッチが必要です。

インスタンス メソッドとは対照的に、静的メソッドはクラスに直接関連付けられます。これにより、コンパイラは必要なクラスとメソッドをすでに認識しているため、動的ディスパッチの必要がなくなります。したがって、静的メソッドのオーバーライドは不要であり、非実用的です。

Constructor "Interfaces"

IXMLizable 実装に対する必須のファクトリ メソッドの強制は、インターフェイスを使用せずに実現できます。 。ファクトリ メソッドを利用するコードは具体的な型を明示的に指定できるため、コンパイラは準拠性を検証できます。

「コンストラクター」なしで IXMLizable 実装が作成され、それを期待しているコードに渡された場合でも、コードはそれを次のように認識します。有効な IXMLizable。これは、構築は実装の詳細であり、インターフェイスの一部ではないためです。インターフェースのみと対話するコードは影響を受けません。

以上がJava 8 より前の Java インターフェイスでは静的メソッドが許可されなかったのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート