7

マーカーインターフェイスは、クラスをマークするだけで主に役立つため、アノテーションを使用して同じことを実現できます。たとえば、Cloneableインターフェイスは@Cloneable

それで、マーカーインターフェースの必要性はまだありますか、それともアノテーションによって置き換えることができますか?それらのいずれかを使用することの長所/短所はありますか?つまり、どちらか一方を優先するということですか?

4

2 に答える 2

7

マーカーインターフェイスは、タイプを定義するために使用される場合、注釈よりも優れています。たとえば、Serializableは、シリアル化可能でなければならない引数のタイプとして使用できます(使用する必要があります)。注釈はそれを許可していません:

public void writeToFile(Serializable object);

マーカーインターフェイスでタイプが定義されておらず、メタデータのみが定義されている場合は、アノテーションの方が適しています。

于 2013-03-04T12:03:38.073 に答える
1

もう1つ言及すべきことは、注釈を使用するコストです。オブジェクトがインターフェイスのインスタンスであるかどうかを確認するために使用できますinstanceof。これは、最近では比較的低コストの操作です。アノテーションを使用するにはJava reflection呼び出しが必要であり、はるかにコストがかかります。

于 2013-03-04T12:15:21.227 に答える