当前位置: 首页 > 知识库问答 >
问题:

标记接口

云慈
2023-03-14

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

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

为什么每当使用 clone() 时,我们都应该实现可克隆的 i/f?

好吧,我的问题是,如果clone()java.lang.Object class的一种方法,为什么要实现Clonable i / f来覆盖clone()。

有人能详细说明一下java的这个惯例吗?

提前致谢

共有3个答案

常献
2023-03-14

标记接口是标记类的常用技术。他们不会给类添加行为(一般来说)。< code>Clonable接口就是这样一个标记:每个用< code>Clonable标记的类都能够克隆自己(这是规则)。

Serializable 相同,尽管该标记接口背后还有一些隐藏的魔力(对象序列化程序查找标记类可能实现或不实现的一些方法和字段)

奖励信息:忘记Cl的,它坏了。如果您想在现实生活中创建克隆,请寻找复制构造函数模式。

卓麒
2023-03-14

马克笔接口是什么

不包含任何实现方法的接口称为标记或标签接口。

为什么要标记接口?

具有标记接口的基本思想是提到类正在实现一个行为是隐式的接口。该类不期望实现任何符合接口定义的契约的东西。相反,它指示JVM关于预期功能的隐式执行。

爪哇示例

  • Serializable-有资格序列化此类型的对象Remote-此类型有资格远程方法调用Clonnable-有资格为实例的字段副本创建字段

我们可以创建自定义标记接口吗?

是的,这是可能的。

曾实
2023-03-14

clone() 是在 java.lang.Object 类中定义的,所有类都从该类扩展,但它是受保护的。这实际上是一个具体的方法实现,它逐字段克隆对象,但前提是您实现了可克隆接口以指示这是允许的。

实际上,许多人重写了clone()方法,以便他们可以将其公开并允许从类外部克隆。

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

 类似资料:
  • 问题内容: 有人可以解释一下Java中标记接口的约定吗? 例如:如果标记界面没有字段/方法,那么定义在哪里? 为什么每次使用时都应实施i / f ? 好吧,我的问题是,如果是类方法,为什么要实现i / f来覆盖。 有人可以详细说明一下Java的这种约定吗? 提前致谢 问题答案: 在所有类的扩展类中定义,但它是。这实际上是一个具体的方法实现,它对对象进行逐字段克隆,但前提是您已实现接口以表明允许这样

  • 问题内容: 在阅读有关标记接口的信息时,我偶然发现了以下站点:项目37:使用标记接口定义类型 在这里,根据Joshua Bloch的说法,标记接口比标记注释有两个优点。 1. 标记接口定义了一种由标记的类的实例实现的类型。标记注释没有。这种类型的存在使您可以在编译时捕获错误,而如果使用标记注释,则这些错误在运行时才捕获。 2. 标记接口相对于标记注释的另一个优点是可以更精确地定位它们。如果使用ta

  • 在阅读有关标记接口的内容时,我偶然发现了以下网站:第37项:使用标记接口定义类型 根据Joshua Bloch的说法,标记接口比标记注释有两个优点。 > 标记接口定义由标记类的实例实现的类型;标记注释没有。这种类型的存在允许您在编译时捕获错误,如果您使用标记注释,则直到运行时才能捕获这些错误。 与标记注释相比,标记接口的另一个优点是可以更精确地定位它们。如果使用target,它可以应用于任何类或接

  • 问题内容: 标记接口是什么?它们的作用是什么? 问题答案: 因为有时候,想到类型的某些属性可以用作类型本身确实很有意义。如果我做这样的方法: …您真的不知道该如何保存。VM序列化?Bean属性序列化?一些自制的方案?而如果您这样写: …非常清楚(如果只有的设计师使用过这种可能性!)。有时,当您想向类型添加元数据时,可以使用注释,但是在这种情况下,我建议使用标记接口。

  • 我被告知Java中的标记接口是一个空接口,用于向编译器或JVM发出信号,表明实现此接口的类的对象必须以特殊方式处理,如序列化、克隆等。 但是最近我了解到,它实际上与编译器或JVM无关。例如,在< code>Serializable接口的情况下,< code>ObjectOutputStream的方法< code>writeObject(Object)执行类似于< code > instance o

  • 我正在使用Logback登录我的应用程序。我使用的是HTMLLayout,我的msg已经格式化,但当logbak打印该msg时,它不会显示格式化的msg 我的logback代码是: 消息示例: HTTP请求:User:unknown-Path:resorts-Header:{host=[localhost:8022],connection=[keep alive],content-length=[