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

用我喜歡的IDE(即Eclipse的),我想通過Ctrl鍵單擊它(像往常一樣),看看上面的clone()方法的源代碼,但它給我帶來了Object的原生一個,它只提供簽名而不提供方法的主體。尋求源代碼:數組的clone()方法在哪裏實現?

自動完成的告訴我,說:clone()方法屬於String類(clone() : String[] - String),但String類的源代碼並沒有提供這樣的方法(因爲我對付String[]類... )。

那麼,該實現隱藏在哪裏?自動填充是否應該修復?

+1

您正在對數組而不是字符串調用克隆。 – assylias 2013-02-12 16:28:48

+2

'clone'是'java.lang.Object'的'native'方法,它適用於所有對象。強制性披露:[克隆已損壞](http://www.artima.com/intv/bloch13.html)。 – dasblinkenlight 2013-02-12 16:34:50

+0

另請參閱鏈接http://stackoverflow.com/questions/6825982/how-does-clone-work-under-the-hood – user1428716 2013-02-12 16:41:33

回答

8

用於克隆數組的代碼位於JVM中(這是本機方法)。對於熱點,它在jvm.cpp的線550/560附近。

0

令人困惑的是Eclipse表示String陣列的clone方法在String類中。但String數組的length方法是從String[]

enter image description here

相關問題