[Java] Java中的标记接口(Tag or marker interfaces)

1. 什么是标记接口?

一个空的接口称为标记接口(Tag Interface),Java中很多标记接口,比如Serializable, EventListener, Remote(java.rmi.Remote)等。

package java.util;
public interface EventListener
{}

2. 标记接口有什么特点?

标记接口没有任何成员变量和方法,它就是空的。你肯定疑惑,既然是空的,其他类怎么去实现(implement)它?它用来做什么?

实际上,其他类implement它是为了声明该类在某个特定集合中的成员资格,比如当一个类实现(implement)了Serializable接口,它的目的是声明其是Serializable中的一个成员,当JVM虚拟机看到该类是Serializable的,那么它在处理序列化/反序列化时会做一些特殊的处理。

标记接口对JVM是很有意义,你可以创建自己的标记接口来分离或分类代码,从而提高代码的可阅读行。