java – 为什么是数组对象,但不能用作基类?

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”)。有能力重写一个数组上的方法,并且肯定不是一个足够的一个来平衡检查正确的方法应用的需要(在我看来不是一个很好的平衡增加了代码读取的难度,类似于覆盖运算符时发生的情况)。

http://stackoverflow.com/questions/27504925/why-are-arrays-objects-but-can-not-be-used-as-a-base-class

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 为什么是数组对象,但不能用作基类?