What is the motivation of retrieving the length of an array using a public instance variable, instead of calling a method? [duplicate]
It is inconsistent. I suppose the actual reason for the distinction can only be found in the early history of Java language development. Perhaps it was for what seemed at the time to be performance reasons. I suspect that if Java were being (re)designed from scratch today, the length
field would disappear and instead there would be a java.lang.Array
class* (similar to java.lang.Enum
) from which all arrays would derive and which would include a length()
method inherited by all arrays.
Actually, the lack of an Array
class (in the above sense) may indicate why there's a length
attribute: arrays are more "built in" to the language than, say, the collection classes (which are part of a class library).
* Java does have java.lang.reflect.Array
, but that does something completely different from what I'm talking about.
Most of the collections have dynamic sizes, so they need a method to verify the length/size in that specific time. An array has a fixed length, so it doesn't need to be recalculated all the time.
An array is of fixed size - it will never change. As such, you don't need the overhead of a method.