Re: [問題] 物件複製問題

看板java作者 (黑駿)時間13年前 (2011/02/15 17:07), 編輯推噓1(1013)
留言14則, 7人參與, 最新討論串3/4 (看更多)
借標題用用^^" 如果想要複製物件 就是讓兩個變數指向不同空間,但內容都一樣 爬文發現好像要 implement Cloneable 然後 override clone() 可是今天我想複製的,是 java 內建的 class 我寫了下面這樣: Label lab1 = new Label(); //some setting of lab1 Label lab2; lab2 = lab1.clone(); 結果跑出下面這些訊息: temp.java:18: clone() has protected access in java.lang.Object lab2 = lab1.clone(); ^ temp.java:18: incompatible types found : java.lang.Object required: java.awt.Label lab2 = lab1.clone(); ^ 去查了發現… Object clone() 竟然是 protected,這樣要怎麼用啊?? 而且 clone() 回傳值看起來是 Object 這樣也沒辦法用 Label 指向他耶… 到底應該怎麼複製?? -- 光明 的背後 是 黑暗 黑暗 的背後 還是 黑暗 由此可知 黑暗 > 光明 Q.E.D. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.140.244

02/15 17:14, , 1F
為什麼會想要複製 Label 呢?
02/15 17:14, 1F

02/15 17:21, , 2F
呃…就是想複製…例如兩個Label只有位置不同
02/15 17:21, 2F

02/15 17:23, , 3F
那用複製的比較快吧 //推文竟然要隔1分鐘0.0
02/15 17:23, 3F

02/15 17:38, , 4F
自建一個 Class 包裝起來 override clone 為 public ?
02/15 17:38, 4F

02/15 17:59, , 5F
GUI物件盡量不要clone 裡面有很多屬性 是我們碰不到的
02/15 17:59, 5F

02/15 20:00, , 6F
所以我應該重寫每一行?才能做出一樣的物件嗎?
02/15 20:00, 6F

02/15 20:14, , 7F
寫個專用的method來複製你需要的屬性就好
02/15 20:14, 7F

02/15 21:08, , 8F
public UrType clone() {return (UrType)super.clone();}
02/15 21:08, 8F

02/16 02:49, , 9F
GUI Component盡量不要用clone/serialization,有許多
02/16 02:49, 9F

02/16 02:51, , 10F
的listener會不工作...
02/16 02:51, 10F

02/16 22:38, , 11F
感覺clone()不是很好用的樣子…除非自己寫的class
02/16 22:38, 11F

02/18 08:59, , 12F
clone本來就是讓你去實作自己能掌控的class
02/18 08:59, 12F

02/18 10:07, , 13F
恩恩~~謝謝大家
02/18 10:07, 13F

02/19 21:58, , 14F
又學到GUI一課!!讚哦
02/19 21:58, 14F
文章代碼(AID): #1DMa9cPD (java)
文章代碼(AID): #1DMa9cPD (java)