标记接口

Ram*_*mya 6 java marker-interfaces

有人可以解释一下java中标记接口的契约吗?

对于Ex:如果Clonable是没有字段/方法的标记接口,那么clone()定义在哪里?

我们为什么要Clonableclone()使用时实现i/f ?

好吧,我的问题是,如果clone()是一个java.lang.Object类的方法,为什么要实现Clonablei/f来覆盖clone().

有人可以详细说明这个java的惯例吗?

提前致谢

EdC*_*EdC 8

clone()java.lang.Object所有类扩展的类中定义,但它是protected.这实际上是一个具体的方法实现,它通过对象的字段克隆来执行字段,但前提是您已实现Cloneable接口以指示允许这样做.

在实践中,许多人重写该clone()方法,以便他们可以创建它public并允许从类外部克隆.

这整个模式很不寻常,而且通常不会复制,我想不出JVM中有许多其他配对标记接口和方法的例子.从Java 5开始,最好使用注释标记.例如,@XmlRootElement用于将类型标记为Jax-B可序列化(后Java 5)与Serializable用于表示类是二进制可序列化的接口(前Java 5).