Code review request for 4881419 The type of X.clone() should be X
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 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:
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
is more informative than the previous text and adequately covers this
More information about the core-libs-dev