天天看点

Java中的标识接口Java中的标识接口

Java中的标识接口

由于java不支持多重继承,即一个类只能有一个父类,为了克服单继承,引入了接口的概念.由于一个类可以实现多个接口,可采用实现多个接口来达到多重继承的目的。

接口是抽象方法定义的集合(也可以定义一些常量值),是一种特殊的抽象类。接口中成员的作用域修饰符都是public,接口中的常量值默认使用public static final修饰.

标识接口

如果接口内部没有声明任何方法,则它仅仅充当一个标识的作用,用来表明实现它的类属于一个特定的类型。类似于汽车标志图标,当看到汽车的标志图标时,就可以知道这款汽车的品牌。java类库中已存在的标识接口有Cloneable和Serializable等。

在使用时会经常用instanceof来判断实例对象的类型是否实现了一个给定的标识接口。以做一些必要的操作。

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 的接口)中指定的这些方法才可远程使用.