有人可以解释一下
java中
标记接口的契约吗?
对于Ex:如果Clonable是没有字段/方法的标记接口,那么clone()定义在哪里?
每当使用clone()时,为什么要实现Clonable i / f?
我的问题是,如果clone()是java.lang.Object类的方法,为什么要实现Clonable i / f来覆盖clone().
有人可以详细说明这个java的惯例吗?
提前致谢
clone()在java.lang.Object类中定义,所有类都扩展自,但它受到保护.这实际上是一个具体的
方法实现,它通过对象的字段克隆来执行字段,但前提是您已实现Cloneable接口以指示允许这样做.
在实践中,许多人重写clone()方法,以便它们可以公开并允许从类外部克隆.
这整个模式很不寻常,而且通常不会复制,我想不出JVM中有许多其他配对标记接口和方法的例子.从Java 5开始,最好使用注释标记.例如@XmlRootElement用于将类型标记为Jax-B可序列化(后Java 5)与Serializable接口(前Java 5),用于表示类是二进制可序列化的.