【发布时间】:2020-02-24 09:24:05
【问题描述】:
我阅读了有关标记接口的内容,并且对如何在代码中使用它们有了一些了解,但我不明白为什么我们需要它们以及引入这个概念的原因是什么。
我在互联网上搜索,所有答案都类似于“它们向 JVM 提供一些基本信息,以便 JVM 可以执行一些有用的操作”,但问题是为什么 JVM 需要知道这一点以及可能的操作JVM必须执行吗?为什么我不能只克隆对象而不从 Clonable 扩展类?为什么我不能在不从 Serializable 扩展的情况下序列化类对象?
标记界面没有多大意义,在我看来显然不是一个好的设计。没有任何方法的接口???有什么意义?
现在显然这里要使用注释而不是标记接口,但问题仍然是为什么 JVM 需要知道?
【问题讨论】:
-
“标记”接口的重点是“标记”类。例如,一个没有直接或间接实现 Serializable 的类就不能被序列化。 “......为什么我们不能没有他们继续前进?”我们可以,我们可以。在某些情况下,为了保持向后兼容性,仍然需要旧的,但没有理由创建新的。 “......没有多大意义......”实际上,一旦你明白了这个概念,他们就会这样做。
-
"为什么我不能只克隆对象而不从 Clonable 扩展类?"如果语言是这样设计的,你本可以做到的。但是克隆文件句柄意味着什么?还是单身?有些东西应该克隆,有些则不;如果不告诉 JVM,没有明显的方法可以确定。
-
@Stultuske 是的,如果你这样说确实有些道理。
-
@AndyTurner 我明白你的意思