由于标记接口主要用于标记一个类,因此可以通过注释来实现相同的目标。比如Cloneable
接口可以@Cloneable
。
那么是否仍然需要标记接口或者可以通过注释来替代?使用其中任何一个有什么优点/缺点吗?我的意思是更喜欢一个而不是另一个?
由于标记接口主要用于标记一个类,因此可以通过注释来实现相同的目标。比如Cloneable
接口可以@Cloneable
。
那么是否仍然需要标记接口或者可以通过注释来替代?使用其中任何一个有什么优点/缺点吗?我的意思是更喜欢一个而不是另一个?
标记接口在用于定义类型时比注释更好。例如,Serializable 可以(并且应该使用)作为必须可序列化的参数的类型。注释不允许这样做:
public void writeToFile(Serializable object);
如果标记接口没有定义类型,而只定义元数据,那么注释会更好。
还要提到的一件事是使用注释的成本。检查对象是否是一个可以使用的接口的实例,instanceof
这是当今相对低成本的操作。使用注释需要Java reflection
调用并且成本更高。