歡迎來到 常識詞典網(wǎng) , 一個專業(yè)的常識知識學(xué)習(xí)網(wǎng)站!
[ Ctrl + D 鍵 ]收藏本站
答案 1:
首先必須知道Java拷貝的用途:Java-是為了得到一個對象,這個對象與-前的對象完全一樣,唯一不同就是它們所處的內(nèi)存地址不相同。對于java中的一切對象(除了基本的數(shù)據(jù)結(jié)構(gòu)int、float、string等之外)在進(jìn)行賦值,方法傳遞的時候,都是一個內(nèi)存地址的同一個對象! 所謂淺拷貝一般就是就是直接調(diào)用對象的clone()方法,這樣的拷貝,對于這個對象中的基本數(shù)據(jù)類型(int、string、float等)的屬性,是可以得到完全的拷貝,但是對于這個對象里面的非基本數(shù)據(jù)類型(對象、集合等)的某些屬性,實際上并沒有進(jìn)行-,而只是進(jìn)行一個賦值操作而已,也就是說-出來的對象與原對象有一部分內(nèi)容的內(nèi)存地址是相同的,這在某些情況下會造成出錯! 由此提出了深拷貝的概念,即覆寫clone()方法,遍歷對象中的每一個屬性,采取合適的方式進(jìn)行-即可。例如對于對象中的集合,可以遍歷集合,然后構(gòu)造一個新的集合,重新存儲一遍... 更過關(guān)于Java-的問題詳見Blog:-i.baidu/-wa-l36...答案 2:
Object需要實現(xiàn)-接口Clonable。在實現(xiàn)clone方法的時候,一般這樣做:class MyObject implements Cloneable { Foo member; public void clone(){ MyObject anot-er = new MyObjct(); if (member instanceof Cloneable){ anot-er.member = (Foo)(((Cloneable)member).clone()); } } }}以上僅僅是實例代碼。答案 3:
淺拷貝和深拷貝的區(qū)別就是在處理對象引用時,淺拷貝只-引用,而深拷貝會將引用對應(yīng)的對象-一份。深拷貝一般都對串行化和對象序列化來實現(xiàn)。下一篇:VO- 形式的呼叫中心的技術(shù)特點是什么?風(fēng)險點在哪里? 下一篇 【方向鍵 ( → )下一篇】
上一篇:光明會真的存在嗎?在-它是怎么樣的? 上一篇 【方向鍵 ( ← )上一篇】
快搜