今天看了一下java里的clone,在實(shí)驗(yàn)中留意到一個(gè)問(wèn)題:如果一個(gè)類(lèi)不重寫(xiě)clone()方法,那么根本無(wú)法調(diào)用clone()方法。這讓我感到困惑,Object類(lèi)里面寫(xiě)了protected clone(),而java里所有類(lèi)都是繼承Object,為什么它們沒(méi)法繼承Object的clone()方法呢?希望哪位好心人能解釋下,感激不盡!
再一個(gè)就是深clone和淺clone,個(gè)人覺(jué)得淺clone不能算真正意義上的clone。而深clone太麻煩了,它必須保證類(lèi)的非原始類(lèi)型屬性也是cloneable的,屬性的屬性也是一樣,不光要cloneable,還要在實(shí)現(xiàn)clone()方法時(shí)一個(gè)一個(gè)的clone。如果一個(gè)類(lèi)的非原始類(lèi)型的屬性又多又深,基本上,這個(gè)類(lèi)就是uncloneable了!
需要說(shuō)明的是,以上所說(shuō)的“非原始類(lèi)型”不包含String,因?yàn)镾tring的實(shí)例是不可變的,它無(wú)需被clone。
以上的想法還很不成熟,希望各位大蝦能指點(diǎn)指點(diǎn)
posted on 2007-09-18 11:25
teasp 閱讀(483)
評(píng)論(4) 編輯 收藏 所屬分類(lèi):
Java學(xué)習(xí)