使用公共实例变量检索数组长度的动机是什么,而不是调用方法?

Jim*_*y C 12 java arrays language-design

由于大多数其他类似乎让开发人员通过调用方法来检索其内容的长度或大小,通常length()或者size(),如何通过读取实例变量来检索数组的长度length?它似乎与我不一致,特别是因为String对象也是不可变的并且仍然使用length()方法.

Ted*_*opp 8

这是不一致的.我想这种区别的实际原因只能在Java语言开发的早期历史中找到.也许这似乎是当时的表现原因.我怀疑如果今天从头开始重新设计Java,那么该length字段将会消失,而是会有一个java.lang.Array*(类似于java.lang.Enum)所有数组将从中派生出来,并且包含length()所有数组继承的方法.

实际上,缺少一个Array类(在上面的意义上)可能表明为什么存在一个length属性:数组比语言库(它是类库的一部分)更"内置"到语言中.

* Java确实有java.lang.reflect.Array,但这与我所说的完全不同.


Dan*_*ira 5

大多数集合都具有动态大小,因此需要一种方法来验证特定时间内的长度/大小.数组具有固定长度,因此无需一直重新计算.