Это тоже работает. Предполагаемая модель
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.