如果标记接口没有任何方法,它是如何工作的?

时间:2010-12-27 18:20:52

标签: java interface

我知道什么是标记接口以及何时需要使用它。我仍然不清楚一个问题。如果标记接口没有任何方法或主体,它在运行时如何工作?

5 个答案:

答案 0 :(得分:22)

标记界面不会“正常”工作。顾名思义,它只是将一个类标记为特定类型。其他一些代码必须检查标记是否存在,并根据该信息做一些事情。

这些天注释通常执行与标记接口之前相同的角色。

答案 1 :(得分:21)

你可以用它做的唯一有用的事情是

if (instance instanceof MyMarkerInterface) {
   ...
}

答案 2 :(得分:7)

标记接口可以在很多地方用注释替换,但标记接口仍然可以用于

  • 编译时检查。你可以有一个方法,它必须使用给定的标记接口来获取类的对象,例如

    public void myMethod(MyMarkerInterface MMI);
    

您无法单独使用注释进行此编译时检查。

顺便说一句:你可以使用泛型有两个接口,但很少有很好的例子。

  • 支持依赖于接口来识别组件类型的框架。喜欢OSGi。

编辑:我将它用作监听器标记界面。侦听器具有标注注释的方法方法,但方法可以具有任何名称或类型。它将编译器时间检查添加到纯粹的运行时链接。

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必须按位复制它。