2013-02-12 4 views
7
new String[] { "foo", "bar" }.clone(); 

Mit meinen bevorzugten IDE (zB Eclipse), wollte ich den Quellcode der oben clone() Methode von Ctrl-Klick auf sie (wie üblich), aber es brachte mich auf die Object ‚s Einheimischer sehen , die nur die Signatur und nicht den Körper der Methode bereitstellt.Auf der Suche nach dem Quellcode: Wo wird die Methode clone() von Arrays implementiert?

Die zum automatischen Vervollständigung sagte mir, dass die clone() Methode zur String Klasse gehörte (clone() : String[] - String), aber der Quellcode der String Klasse bietet keine solche Methode (da ich mit der String[] Klasse zu tun habe ...).

Also, wo versteckt sich diese Implementierung? Soll die Autovervollständigung behoben werden?

+1

Sie anrufen Klon auf einem Array, nicht an einer Schnur. – assylias

+2

'clone' ist eine' native' Methode von 'java.lang.Object', sie funktioniert bei allen Objekten. Obligatorische Offenlegung: [Klon ist defekt] (http://www.artima.com/intv/bloch13.html). – dasblinkenlight

+0

Siehe auch den Link http://stackoverflow.com/questions/6825982/how-does-clone-work-under-the-hood – user1428716

Antwort

8

Der Code zum Klonen eines Arrays ist in der JVM (es ist eine native Methode). Für Hotspot handelt es sich um Linien 550/560 von jvm.cpp.

0

Was verwirrend ist, dass Eclipse-sagt, dass die clone Verfahren für einen String Array in String Klasse. Aber die length Methode von String-Array ist von String[].

enter image description here

Verwandte Themen