Java marker接口的内部实现是什么?

Java marker接口的内部实现是什么?,java,interface,Java,Interface,我知道一些关于“标记接口”的事情,标记接口没有任何成员。例如:可序列化、可克隆等 我在谷歌上发现marker接口是用来向JVM发送指令的?我想知道这些说明是什么,我如何理解?请帮我举一个真实的例子。标记接口是一种标记类是或做某些事情的方法,甚至这些事情也没有表示为实际的方法。例如,Serialiazable、Cloneable等,由于引入了注释,它们几乎总是首选的,尽管它们不能完全取代标记接口,正如Joshua Bloch所建议的那样 。。。您可能会听到它说,标记注释第35项构成标记 接口过时了

我知道一些关于“标记接口”的事情,标记接口没有任何成员。例如:可序列化、可克隆等


我在谷歌上发现marker接口是用来向JVM发送指令的?我想知道这些说明是什么,我如何理解?请帮我举一个真实的例子。

标记接口是一种标记类是或做某些事情的方法,甚至这些事情也没有表示为实际的方法。例如,Serialiazable、Cloneable等,由于引入了注释,它们几乎总是首选的,尽管它们不能完全取代标记接口,正如Joshua Bloch所建议的那样

。。。您可能会听到它说,标记注释第35项构成标记 接口过时了。这一断言是不正确的。标记接口 与标记注释相比,它有两个优点。首先,, 标记接口定义由的实例实现的类型 标记类;标记注释不需要。这个问题的存在 类型允许您在编译时捕获无法捕获的错误 如果使用标记注释,则在运行时之前捕获

在可序列化的情况下,类实现此接口以指示其非瞬态数据成员可以写入ObjectOutputStream。此外,序列化对象需要保持跨系统的兼容性,这是一个明确的设计决策,因此需要使用标记接口来识别这些候选对象


类似地,实现Cloneable告诉JVM这个类实现了Cloneable,因此JVM必须逐位复制它。

标记接口是一种标记类是或做某些事情的方法,甚至这些事情也没有表示为实际的方法。例如,Serialiazable、Cloneable等,由于引入了注释,它们几乎总是首选的,尽管它们不能完全取代标记接口,正如Joshua Bloch所建议的那样

。。。您可能会听到它说,标记注释第35项构成标记 接口过时了。这一断言是不正确的。标记接口 与标记注释相比,它有两个优点。首先,, 标记接口定义由的实例实现的类型 标记类;标记注释不需要。这个问题的存在 类型允许您在编译时捕获无法捕获的错误 如果使用标记注释,则在运行时之前捕获

在可序列化的情况下,类实现此接口以指示其非瞬态数据成员可以写入ObjectOutputStream。此外,序列化对象需要保持跨系统的兼容性,这是一个明确的设计决策,因此需要使用标记接口来识别这些候选对象

类似地,实现Cloneable告诉JVM这个类实现Cloneable,因此JVM必须逐位复制它

在谷歌搜索中发现marker接口用于向JVM发送一些指令

不是。它们被用作其他Java代码的标记

我想知道这些说明是什么

没有什么比一次测试更奇特了

在谷歌搜索中发现marker接口用于向JVM发送一些指令

不是。它们被用作其他Java代码的标记

我想知道这些说明是什么


没有什么比instanceof test更奇怪了。

标记接口没有实现

但是,标记接口通常会影响其他一些类的行为

我在谷歌上发现marker接口是用来向JVM发送指令的

这是不正确的

它所做的是向JVM或JVM提供或运行的类提供信息。这些信息不是以说明的形式提供的。相反,它是类级别的标签

例如,当您将一个类声明为可序列化时,您将向ObjectInputStream和ObjectOutputStream传递可以序列化该类实例的信息。您正在以类本身的形式传递该信息;i、 e.ObjectInputStream和ObjectOutputStream可以使用instanceof或等效物来测试对象是否可序列化

请帮我举一个真实的例子

Serializable和Cloneable是Java类库中众所周知的例子

还有其他接口具有类似方面的标记接口。例如,Closeable和Autocloseable都有一个close方法来完成相同的任务。不同之处在于,try with resources语句将AutoCloseable视为标记


最后,标记接口受到OO设计纯粹主义者的反对是毫无价值的。您可以使用Java注释实现相同的目的。

标记接口没有实现

但是,标记接口通常会影响其他一些类的行为

我在谷歌上发现marker接口是用来向JVM发送指令的

这是不正确的

它所做的是向JVM或JVM提供或运行的类提供信息。这些信息不是以说明的形式提供的。相反,它是类级别的标签

例如,当您将一个类声明为可序列化时,您将向ObjectInputStream和ObjectOutputStream传递可以序列化该类实例的信息。您正在以类本身的形式传递该信息;i、 e.ObjectInputStream和ObjectOutputStream可以使用instanceof或等效物来测试对象是否可序列化

请帮我举一个真实的例子

Serializable和Cloneable是Java类库中众所周知的例子

还有其他接口具有类似方面的标记接口。例如,Closeable和Autocloseable都有一个close方法来完成相同的任务。不同之处在于,try with resources语句将AutoCloseable视为标记


最后,标记接口受到OO设计纯粹主义者的反对是毫无价值的。使用Java注释也可以达到同样的目的。

看看这个。看看这个。最后一句话表达得非常草率。”实现Cloneable告诉JVM,这个类实现Cloneable“只是一个同义反复,最后一句表达得非常松散。”实现Cloneable告诉JVM,这个类实现Cloneable只是一个同义反复。