注释可以完全取代标记接口吗?

时间:2013-03-04 11:37:23

标签: java annotations marker-interfaces

由于标记接口主要用于标记类,因此可以通过注释实现相同的功能。例如Cloneable接口可以是@Cloneable

那么是否还需要标记接口,还是可以通过Annotations重新划分?使用其中任何一个有什么优点/缺点吗?我的意思是比其他人更喜欢?

2 个答案:

答案 0 :(得分:7)

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

public void writeToFile(Serializable object);

如果标记界面没有定义类型,只定义元数据,则注释更好。

答案 1 :(得分:1)

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