Where is array's length property defined?
arrays, java
Solution
Arrays are special objects in java, they have a simple attribute named `length` which is `final`.
There is no "class definition" of an array (you can't find it in any .class file), they're a part of the language itself.
10.7. Array Members
The members of an array type are all of the following:
- The `public` `final` field `length`, which contains the number of components of the array. `length` may be positive or zero.
The `public` method `clone`, which overrides the method of the same name in class `Object` and throws no checked exceptions. The return type of the `clone` method of an array type `T[]` is `T[]`.
A clone of a multidimensional array is shallow, which is to say that it creates only a single new array. Subarrays are shared.
- All the members inherited from class `Object`; the only method of `Object` that is not inherited is its `clone` method.
Resources:
- JLS - Arrays
Problem
We can determine the length of an `ArrayList<E>` using its public method `size()`, like ``` ArrayList<Integer> arr = new ArrayList(10); int size = arr.size(); ``` Similarly we can determine the length of an `Array` object using the `length` property ``` String[] str = new String[10]; int size = str.length; ``` Whereas the `size()` method of `ArrayList` is defined inside the `ArrayList` class, where is this `length` property of `Array` defined?