Java语言规范指定
在Java编程语言中,数组是对象(第4.3.1节),是动态创建的,并且可以分配给对象类型(第4.3.2节)的变量。所有的类方法Object都可以在数组上调用。
因此,考虑数组对象-为什么Java的设计者做出决定不允许继承和覆盖从它,例如,toString()还是equals()?
当前的语法不允许创建以数组为基类的匿名类,但我认为这不是做出它们决定的原因。 问题来源于stack overflow
Java是非对象语言和当时一切都是对象的非常慢的语言之间的折衷(想想Smalltalk)。
甚至在较新的语言中,在数组(通常是地图)的语言级别上具有快速结构也被视为战略目标。大多数人不希望数组具有可继承对象的重量,并且在JVM像JIT一样发展之前,当然没有人希望这样做。
这就是为什么数组虽然是对象,却没有被设计为类实例(“对象是类实例或数组”)。能够重写数组上的方法几乎没有什么好处,并且肯定不能抵消需要检查正确方法的需求(我认为还不足以抵消一个方法)增加的代码读取难度,类似于您重写运算符时发生的情况。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。