小编典典

标记接口

java

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

例如:如果Clonable标记界面没有字段/方法,那么clone()定义在哪里?

为什么Clonable每次clone()使用时都应实施i / f ?

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

有人可以详细说明一下Java的这种约定吗?

提前致谢


阅读 220

收藏
2020-11-23

共1个答案

小编典典

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

实际上,许多人都重写了该clone()方法,以便他们可以使用它public并允许从类外部进行克隆。

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

2020-11-23