gpt4 book ai didi

java - 为什么数组是对象,却不能作为基类?

转载 作者:IT老高 更新时间:2023-10-28 13:52:20 26 4
gpt4 key购买 nike

Java 语言规范规定

In the Java programming language arrays are objects (§4.3.1), are dynamically created, and may be assigned to variables of type Object (§4.3.2). All methods of class Object may be invoked on an array.

所以,考虑到数组是对象——为什么 Java 设计者决定不允许继承和覆盖它,例如,toString()equals()?

当前的语法不允许创建以数组为基类的匿名类,但我认为 不是他们做出决定的原因。

最佳答案

Java 是非对象语言和当时一切都是对象的非常慢的语言之间的一种折衷方案(想想 Smalltalk)。

即使在较新的语言中,在语言级别为数组(通常是映射)提供快速结构也被视为一项战略目标。大多数人不喜欢数组的可继承对象的重量,当然在 JVM 像 JIT 一样进步之前没有人想要这个。

这就是为什么数组虽然是对象,但没有被设计为类实例("An object is a class instance or an array")。能够覆盖数组上的方法几乎没有什么好处,而且肯定不是一个足够好的方法来抵消检查是否应用正确方法的需要(在我看来,这还不足以抵消代码阅读难度增加,类似于覆盖运算符时发生的情况)。

关于java - 为什么数组是对象,却不能作为基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504925/

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