由于标记接口主要用于标记类,因此可以通过注释实现相同的功能。例如Cloneable
接口可以是@Cloneable
。
那么是否还需要标记接口,还是可以通过Annotations重新划分?使用其中任何一个有什么优点/缺点吗?我的意思是比其他人更喜欢?
答案 0 :(得分:7)
标记接口在用于定义类型时优于注释。例如,可以使用(并且应该使用)Serializable作为必须可序列化的参数的类型。注释不允许这样做:
public void writeToFile(Serializable object);
如果标记界面没有定义类型,只定义元数据,则注释更好。
答案 1 :(得分:1)
还有一件事要提到使用注释的成本。要检查对象是否是接口的实例,可以使用instanceof
,这是一种相对低成本的操作。使用注释需要Java reflection
次调用,而且成本更高。