Це теж працює. Припускаючи модель
class UserAccount{
public int id;
public String name;
}
Спочатку додайте
compile 'com.google.code.gson:gson:2.8.1'
до свого додатка> gradle & sync. Тоді
Gson gson = new Gson();
updateUser = gson.fromJson(gson.toJson(mUser),UserAccount.class);
Ви можете виключити використання поля, використовуючи transient
ключове слово після модифікатора доступу.
Примітка. Це погана практика. Також не рекомендую використовувати Cloneable
або JavaSerialization
Це повільно і зламано. Напишіть конструктор копій для найкращої роботи ref .
Щось на зразок
class UserAccount{
public int id;
public String name;
//empty constructor
public UserAccount(){}
//parameterize constructor
public UserAccount(int id, String name) {
this.id = id;
this.name = name;
}
//copy constructor
public UserAccount(UserAccount in){
this(in.id,in.name);
}
}
Статистика тестів 90000 ітерацій:
Лінія UserAccount clone = gson.fromJson(gson.toJson(aO), UserAccount.class);
займає 808 мс
Лінія UserAccount clone = new UserAccount(aO);
займає менше 1 мс
Висновок: Використовуйте gson, якщо ваш начальник божевільний і ви віддаєте перевагу швидкості. Використовуйте конструктор другої копії, якщо ви віддаєте перевагу якості.
Також ви можете використовувати плагін генератора коду конструктора копій в Android Studio.