隨筆 - 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這個名字是大家所遵循的,僅此而已。

            回復  更多評論
            
          主站蜘蛛池模板: 沾益县| 鹤庆县| 元谋县| 梁河县| 彰武县| 潜山县| 金川县| 平泉县| 浮山县| 洛南县| 额尔古纳市| 肥东县| 灵山县| 诸暨市| 贡山| 定安县| 龙泉市| 佛坪县| 新田县| 讷河市| 景泰县| 郸城县| 卢龙县| 遂平县| 保山市| 鄂尔多斯市| 巴彦淖尔市| 达孜县| 科技| 长丰县| 阳信县| 隆安县| 阆中市| 墨竹工卡县| 密山市| 无为县| 拜泉县| 清水河县| 木兰县| 赤峰市| 墨玉县|