Code review request for 4881419 The type of X[].clone() should be X[]
Joe Darcy
joe.darcy at oracle.com
Tue Sep 7 16:15:18 UTC 2010
David Holmes wrote:
> Jeroen Frijters said the following on 09/07/10 17:59:
>> David Holmes wrote:
>>> The fact that Object.clone() is implemented via a native call into
>>> the VM is simply an implementation detail.
>>
>> That's not what we're talking about. We're talking about the fact
>> that arrays (appear to) have a *public* clone method. The argument is
>> about the return type[1] of this method: according to the JLS it is
>> X[], but according to the VMSpec it is Object. This difference is
>> fine, but I'm arguing that the JLS fiction should be in the JLS, not
>> in the Object.clone() documentation.
>
> I don't see where the VMSpec says anything about cloning ... but that
> aisde. I hadn't realized that the JLS states that arrays override
> Object.clone() rather than inheriting it - it would have been simpler
> to cover the array and non-array cases in Object.clone().
Yes, as cited in my review request, the JLS does state the return type
of clone called on an array:
http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.4.5
and states that the array clone overrides Object.clone.
>
> As it stands there is no actual API doc in which to put this
> information, so we really have no choice but to put it Object (having
> it only in the JLS is inadequate). That said I would call it out
> explicitly in its own paragraph, something like:
>
> "All array types, X[], are considered to implement Cloneable and to
> override this method to return a new X[] containing the same elements
> as the original."
>
I believe the revised text
http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a6c142240837
is more informative than the previous text and adequately covers this
situation.
-Joe
More information about the core-libs-dev
mailing list