メソッドを定義しているにもかかわらず、インターフェイスはどのようにComparable
マーカーインターフェイスですか? compareTo()
詳細を説明してください。
3 に答える
マーカー インターフェイスは単なるデザイン パターンです。したがって、「X はマーカー インターフェイスです」と読み回しても、「X はメソッドが宣言されていないインターフェイスです」以外の意味はありません。
メソッドが 1 つしかないためComparable<T>
、マーカー インターフェイスとしては使用されません。
マーカー インターフェイスは、特定の状況でこのデータを使用できるようにデータをタイプにアタッチする場合に便利です。これはComparable
、効果的なインターフェイスを提供するために使用される の場合とは異なります。
マーカー インターフェイスの定義が javadoc で使用されて、空のインターフェイスを記述するとは思いませんSerializable
(ただし、それについてはわかりません)。
これはマーカー インターフェイスではありません。Serializable、Clonnable、Remote などの Java のマーカー インターフェイスは、コンパイラまたは JVM に何かを示すために使用されます。コンパイラにフラグを示します。
ウィキペディアのマーカー インターフェイス パターンの引用(強調は鉱山):
[...] クラスはマーカー インターフェイスを実装し、そのクラスのインスタンスと対話するメソッドはインターフェイスの存在をテストします。典型的なインターフェイスは、実装クラスがサポートする必要がある機能を (メソッド宣言の形式で) 指定しますが、マーカー インターフェイスはそうする必要はありません。このようなインターフェースが単に存在するということは、実装するクラスの一部に特定の動作があることを示しています。マーカーとして機能し、必要なメソッドを指定するハイブリッド インターフェイスは可能ですが、不適切に使用すると混乱を招く可能性があります。
そうは言ってもマーカーインターフェースとComparable<T>
呼べるのですが、ややこしくて聞いたことがありません。
Comparable<T>
実際にダウンキャストして呼び出すことなく、オブジェクトが実装されているかどうかをテストするクラスを想像することはできませんcompareTo()
。