gpt4 book ai didi

java - java中标记接口(interface)的意义是什么?为什么没有它们我们就不能继续下去?

转载 作者:行者123 更新时间:2023-12-01 19:33:36 25 4
gpt4 key购买 nike

我已经阅读了有关标记接口(interface)的内容,并且对如何在代码中使用它们有了一些了解,但我不明白为什么我们需要它们以及引入这个概念的原因是什么。

我在互联网上搜索,所有答案都是“它们向 JVM 提供一些基本信息,以便 JVM 可以执行一些有用的操作”,但问题是为什么 JVM 需要知道这一点以及可能的操作JVM必须执行吗?为什么我不能只克隆对象而不从 Clonable 扩展类?为什么我不能序列化类对象而不从 Serialized 扩展它?

标记界面没有多大意义,在我看来显然不是一个好的设计。没有任何方法的接口(interface)???有什么意义?

现在显然这里使用注释而不是标记接口(interface),但问题仍然是为什么 JVM 需要知道?

最佳答案

您清楚地了解标记接口(interface)的作用。你自己也这么说!

那么为什么我们仍然需要它们?

从某种意义上说,我们不需要它们。任何可以用标记接口(interface)表达的东西都可以用注释来表达。毫无疑问,注释是解决问题的一种更简洁的方法。

我们(仍然)拥有标记界面的根本原因是历史:

  • Java 注释是在 Java 5.0 中添加到 Java 语言中的。在此之前,标记接口(interface)是可用的最佳解决方案。

  • 从类中删除标记接口(interface)会破坏二进制兼容性。

  • 有少量 Java SE 标记接口(interface)早于 Java 5.0,并广泛用于用户代码中。我想到的两个是可序列化和可克隆。

无论我们喜欢与否,Java 都有标记接口(interface),而且不太可能改变。

<小时/>

Marker interfaces doesn't make much sense and is clearly not a good design in my opinion.

嗯,是的。从2019年的角度来看,确实如此。

从 1997 年的角度来看,当时 Java 刚刚出现,C# 才出现 5 年,唯一具有注释之类的主流语言是 LISP 版本。

现在我非常确定,早在 Java 1.0 时代,Java 类库的设计者就意识到标记接口(interface)是一个有缺陷的想法。但他们别无选择。它是使用标记接口(interface),或者将一些漂亮的 Java 基础 API 的设计和实现推迟 5 年或更长时间。

在企业计算领域,您需要做出妥协才能完成工作。

关于java - java中标记接口(interface)的意义是什么?为什么没有它们我们就不能继续下去?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58602321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com