7

由于标记接口主要用于标记一个类,因此可以通过注释来实现相同的目标。比如Cloneable接口可以@Cloneable

那么是否仍然需要标记接口或者可以通过注释来替代?使用其中任何一个有什么优点/缺点吗?我的意思是更喜欢一个而不是另一个?

4

2 回答 2

7

标记接口在用于定义类型时比注释更好。例如,Serializable 可以(并且应该使用)作为必须可序列化的参数的类型。注释不允许这样做:

public void writeToFile(Serializable object);

如果标记接口没有定义类型,而只定义元数据,那么注释会更好。

于 2013-03-04T12:03:38.073 回答
1

还要提到的一件事是使用注释的成本。检查对象是否是一个可以使用的接口的实例,instanceof这是当今相对低成本的操作。使用注释需要Java reflection调用并且成本更高。

于 2013-03-04T12:15:21.227 回答