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

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

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

这些日子的注释经常和标记界面以前做的一样。

唯一有用的东西是你可以用它做的

 if (instance instanceof MyMarkerInterface) { ... } 

标记接口可以在很多地方用标注replace,但标记接口仍然可以使用

  • 编译时间检查。 你可以有一个方法,必须带一个给定的标记接口的类的对象例如

     public void myMethod(MyMarkerInterface MMI); 

你不能单独使用注释来检查这个编译时间。

顺便说一句:你可以有两个使用generics的接口,但很好的例子是罕见的。

  • 支持依赖于接口来识别组件types的框架。 像OSGi。

编辑:我用这个监听器标记界面。 一个监听器有方法方法标注了注解,但方法可以有任何名称或types。 它增加了一个编译器时间检查,否则将是纯粹的运行时链接。

 public Component implements Listener { @ListenerCallback public void onEventOne(EventOne... eventOneBatch) { } @ListenerCallback public void onEventTwo(EventTwo eventTwo) { } } 

Java中的标记接口是没有字段或方法的接口,或者是简单的单词java中的空接口被称为标记接口。 例如可序列化的Clonnable和远程接口。 它们用于向编译器或JVM指示信号或命令。 它也可以用来分类代码。 您也可以编写自己的标记界面,并使用它们在逻辑上划分代码。 另外,您可以在这些类上编写任何预处理操作。

标记接口告诉JVM该标记接口标记的类添加标记接口的function。 就像实现Cloneable一样,告诉JVM这个类实现了Cloneable,因此JVM将不得不按位拷贝它。