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