gpt4 book ai didi

java - java 的先有鸡还是先有蛋的困境

转载 作者:行者123 更新时间:2023-12-01 07:10:57 25 4
gpt4 key购买 nike

对象位于Java类的顶层。String 是 Object 的子类。

那么,什么是第一个 - 对象还是字符串?

提示答案是 - 对象。

但有趣的是,Object 已经有一个方法 toString(),因此“知道”String。因此,当构造 Object 时,String 必须已经存在。另一方面,String是Object的子类,当构造String时,Object必须已经存在。我们陷入了永无休止的定义周期(还有一些技术问题)。这种方法至少违反了单一根类的思想。

这种担忧可能看起来相当理论上,而不是实际。

但问题是我在其他框架中看到了类似的方法。我认为至少在某种程度上它受到了核心 Java 类的设计方式的启发。

您认为 Java 类之间的循环依赖关系一般(特别是对象/字符串的情况)是不可避免的吗?难道不应该不惜一切代价避免它们吗?或者有时可以通过合理的妥协(谨慎和谨慎地)接受它们?如果,那么——标准是什么?

最佳答案

Java 没有单遍编译器,而是多遍编译器。

这意味着编译在一起的所有类实际上都处于声明级别。即使它们具有循环依赖关系,这些也可以在第一步中解决,因此 Object 类提供 toString 方法这一事实在概念上并不意味着与具有或更少根相关的任何事情类。

由于我们正在讨论理论问题,因此类声明和哪个是真正的根类之间的关系很容易解决:

Object 是根类,因为 String 继承自它。

String toString() 只是一个有助于编译器授予类型安全性的签名,Object 不需要 String 对象,它甚至不需要知道 String 是什么。

关于java - java 的先有鸡还是先有蛋的困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14418883/

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