有人可以解释一下 java 中标记接口的契约吗?
例如:如果Clonable
是一个没有字段/方法的标记接口,那么clone()
在哪里定义?
为什么每当使用 clone()
时,我们都应该实现可克隆
的 i/f?
好吧,我的问题是,如果clone()
是java.lang.Object
class的一种方法,为什么要实现Clonable
i / f来覆盖clone()。
有人能详细说明一下java的这个惯例吗?
提前致谢
标记接口是标记类的常用技术。他们不会给类添加行为(一般来说)。< code>Clonable接口就是这样一个标记:每个用< code>Clonable标记的类都能够克隆自己(这是规则)。
与 Serializable
相同,尽管该标记接口背后还有一些隐藏的魔力(对象序列化程序查找标记类可能实现或不实现的一些方法和字段)
奖励信息:忘记Cl的
,它坏了。如果您想在现实生活中创建克隆,请寻找复制构造函数模式。
马克笔接口是什么
不包含任何实现方法的接口称为标记或标签接口。
为什么要标记接口?
具有标记接口的基本思想是提到类正在实现一个行为是隐式的接口。该类不期望实现任何符合接口定义的契约的东西。相反,它指示JVM关于预期功能的隐式执行。
爪哇示例
我们可以创建自定义标记接口吗?
是的,这是可能的。
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=[