12.Java的标记接口

一.什么是标记接口?

概念:没有任何方法的接口是标记接口。并不是Java的语法,而是一种设计理念。

例如下面是ArrayList的源码:

public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable

  ArrayList实现了RandomAccess接口、Cloneable接口和Serializable接口。然而我们可以发现,这三个接口里面什么都没写,例:

public interface RandomAccess {
}

  RandomAccess:可随机访问。RandomAccess仅仅是一个标记,用于标记该类可以被随机访问。

二. Cloneable接口

  • 对象在调用clone()方法时,类必须实现Cloneable接口。否则当调用clone()时会抛出CloneNotSupportedException异常。
  • Cloneable接口是不包含任何方法的!其实这个接口仅仅是一个标志,而且这个标志也仅仅是针对 Object类中clone()方法的,如果clone类没有实现Cloneable接口,并调用了Object的clone()方法(也就是调用了 super.Clone()方法),那么Object的clone()方法就会抛出CloneNotSupportedException异常。

 

原文地址:https://www.cnblogs.com/zhihaospace/p/12150284.html