概述
标识接口是没有任何方法和属性的接口,它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。使用标记接口的唯一目的是使得可以用instanceof
进行类型查询,例如:
if(obj instanceof Cloneable) {
………
}
一些容器例如Ejb
容器,servlet
容器或运行时环境依赖标记接口识别类是否需要进行某种处理,比如serialialbe接口标记类需要进行序列化操作。
标记接口有哪些
在这里我们简单列一下常见的标记接口
java.io.Serializable
未实现此接口的类将无法使其任何状态序列化或反序列化,为保证serialVersionUID
值跨不同Java编译器之后序列化与反序列化时实现的一致性,序列化类必须声明一个明确的serialVersionUID
值java.lang.Cloneable
表明Object.clone()
方法可以合法地对该类实例进行按字段复制,实现此接口的类应该使用公共方法重写Object.clone(它是受保护的)
如果在没有实现Cloneable
接口的实例上调用Object类的clone
方法,则会导致抛出CloneNotSupportedException
异常java.util.RandomAccess
用来表明其支持快速(通常是固定时间)随机访问,此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机或连续访问列表时能提供良好的性能java.rmi.Remote
Remote
接口用于标识其方法可以从非本地虚拟机上调用的接口,任何远程对象都必须直接或间接实现此接口,只有在“远程接口”(扩展java.rmi.Remote
的接口)中指定的这些方法才可远程使用.