隨筆 - 11  文章 - 33  trackbacks - 0
          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

                 今天看了一下java里的clone,在實驗中留意到一個問題:如果一個類不重寫clone()方法,那么根本無法調用clone()方法。這讓我感到困惑,Object類里面寫了protected clone(),而java里所有類都是繼承Object,為什么它們沒法繼承Object的clone()方法呢?希望哪位好心人能解釋下,感激不盡!

                 再一個就是深clone和淺clone,個人覺得淺clone不能算真正意義上的clone。而深clone太麻煩了,它必須保證類的非原始類型屬性也是cloneable的,屬性的屬性也是一樣,不光要cloneable,還要在實現clone()方法時一個一個的clone。如果一個類的非原始類型的屬性又多又深,基本上,這個類就是uncloneable了!

                  需要說明的是,以上所說的“非原始類型”不包含String,因為String的實例是不可變的,它無需被clone。


                  以上的想法還很不成熟,希望各位大蝦能指點指點
          posted on 2007-09-18 11:25 teasp 閱讀(482) 評論(4)  編輯  收藏 所屬分類: Java學習

          FeedBack:
          # re: java里的clone 2007-09-18 12:07 teasp
          又看了一下,ArrayList是淺clone  回復  更多評論
            
          # re: java里的clone 2007-09-19 10:20 zht
          不是不能繼承Object的clone方法,是如果要想進行復制,必須得實現cloneable接口才可以,這個接口表明類可用clone進行復制  回復  更多評論
            
          # re: java里的clone 2007-09-19 11:56 teasp
          非常感謝樓上的回復,雖然你說的我知道。應該是我沒表述清楚,第一段里的“沒法繼承”應該是“沒有繼承”。我的意思是由于其他類都是繼承Object,所以應該繼承了Object的clone()方法,只是如果這個類沒有實現cloneable的話,在調用clone()時會拋異常。而實際情況是,如果沒有實現cloneable并重寫clone()方法,壓根就沒clone()方法可以調用,這很奇怪。  回復  更多評論
            
          # re: java里的clone[未登錄] 2007-09-22 14:16 Eric

          “而實際情況是,如果沒有實現cloneable并重寫clone()方法,壓根就沒clone()方法可以調用,這很奇怪。”

          盡信書不如無書啊,說實話core java 7th vol1的翻譯實在是不敢恭維。
          請看下面的代碼:

          class Employee implements Cloneable throws CloneNotSupportedException
          {
          public Employee getEmployee()
          {
          return (Employee)clone();
          }
          }

          首先要使Employee支持克隆,必須實現Cloneable接口。
          genEmployee方法實現的淺克隆跟覆蓋Object類的clone方法效果是一樣的。
          只不過clone這個名字是大家所遵循的,僅此而已。

            回復  更多評論
            
          主站蜘蛛池模板: 营口市| 资中县| 当雄县| 新绛县| 高青县| 仙居县| 利辛县| 余姚市| 泸州市| 泾川县| 丽水市| 怀宁县| 尤溪县| 扎赉特旗| 大城县| 东丽区| 股票| 页游| 连南| 新邵县| 铜陵市| 始兴县| 曲沃县| 永定县| 宣威市| 湾仔区| 鹤壁市| 天峨县| 榆中县| 阿城市| 蕲春县| 澄江县| 临漳县| 额尔古纳市| 青河县| 海伦市| 灌云县| 辽阳县| 陈巴尔虎旗| 手游| 策勒县|