看板 java 關於我們 聯絡資訊
不好意思馬上又有問題了^^" 我有一個JavaBean物件, 叫做User, 有一個List用來存放User們, 假設為 List<User> mUserList; 如果今天我需要一個mUserList的副本, 我之前的作法都是 List<User> copyUserList = new ArrayList<User>(mUserList); 但是我在Debug模式中發現, 雖然這兩個List的記憶體位址已經不同了, 但是裡面的物件的記憶體位址卻還是相同的, 我目前的做法是自己寫一個Copy函示, public static List<User> copyListUser(List<User> mListUser){ List<User> tempListUser = new ArrayList<User>(); for (User mUser : mListUser) { tempListUser.add(User.clone()); } return tempListUser; } 想請問有沒有更好的方法來做到這件事情。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.107.99
LPH66:這就是 shallow copy 跟 deep copy 的差別 07/13 18:42
LPH66:ArrayList.clone() 是 shallow copy, 你寫的則是 deep copy 07/13 18:43
popcorny:大概就只能這樣寫 比較tricky的就是用Serializable來做 07/13 18:51
gmoz:應該就只能深層克隆而已 07/14 16:09
abola921:這個問題摸了好久,Serializable真的可以解(大部份) 07/15 17:46