我知道什么是标记接口以及何时需要使用它。我仍然不清楚一个问题。如果标记接口没有任何方法或主体,它在运行时如何工作?
答案 0 :(得分:22)
标记界面不会“正常”工作。顾名思义,它只是将一个类标记为特定类型。其他一些代码必须检查标记是否存在,并根据该信息做一些事情。
这些天注释通常执行与标记接口之前相同的角色。
答案 1 :(得分:21)
你可以用它做的唯一有用的事情是
if (instance instanceof MyMarkerInterface) {
...
}
答案 2 :(得分:7)
标记接口可以在很多地方用注释替换,但标记接口仍然可以用于
编译时检查。你可以有一个方法,它必须使用给定的标记接口来获取类的对象,例如
public void myMethod(MyMarkerInterface MMI);
您无法单独使用注释进行此编译时检查。
顺便说一句:你可以使用泛型有两个接口,但很少有很好的例子。
编辑:我将它用作监听器标记界面。侦听器具有标注注释的方法方法,但方法可以具有任何名称或类型。它将编译器时间检查添加到纯粹的运行时链接。
public Component implements Listener {
@ListenerCallback
public void onEventOne(EventOne... eventOneBatch) { }
@ListenerCallback
public void onEventTwo(EventTwo eventTwo) { }
}
答案 3 :(得分:1)
Java中的标记接口是没有字段或方法的接口,或者简单的单词中的空接口称为标记接口。例如可序列化,可克隆和远程接口。它们用于向编译器或JVM指示信号或命令。它也可以用于分类代码。您还可以编写自己的标记界面,并使用它们在逻辑上划分代码。此外,您可以在这些类上编写任何预处理操作。
答案 4 :(得分:0)
标记接口告诉JVM标记接口标记的类以添加标记接口的功能。就像实现Cloneable一样告诉JVM这个类实现了Cloneable,因此JVM必须按位复制它。