Я пытаюсь написать класс, который имеет методы exportToString и importFromString. ExportToString сериализует этот класс в строку JSON:
public String exportToString() {
Gson gson = new Gson();
String json = gson.toJson(this);
return json;
}
Мне нужно написать importFromString (String str). Проблема в том, что "эта" переменная является окончательной, и я не могу полностью переназначить это значение. Это то, что у меня есть:
public void importFromString(String str) {
Gson gson = new Gson();
Object obj = gson.fromJson(str, this.getClass());
this = (PlayerData) obj; // ERROR: cannot assign value to final variable this
}
PS Извините за мой английский
Я думаю, что самый простой способ сделать то, что вы хотите, - сделать второй метод статическим и вернуть экземпляр объекта, представленного в строке:
public static PlayerData importFromString(String str) {
Gson gson = new Gson();
Object obj = gson.fromJson(str, PlayerData.class);
return (PlayerData) obj;
}
Затем вы вызываете его следующим образом:
PlayerData obj = PlayerData.importFromString(someString);
Что-то вроде этого, может быть?
public static PlayerData importFromString(String str) {
Gson gson = new Gson();
Object obj = gson.fromJson(str, PlayerData.class);
return (PlayerData) obj;
}
PlayerData
либо обновить каждую переменную текущего объекта, чтобы отразить данные из json