Java自我反序列化

时间:2014-12-23 14:33:37

标签: java serialization gson this final

我正在尝试编写一个具有exportToString和importFromString方法的类。 ExportToString将此类序列化为JSON字符串:

public String exportToString() {
    Gson gson = new Gson();
    String json = gson.toJson(this);
    return json;
}

我需要编写importFromString(String str)。问题是“this”变量是最终的,我无法完全重新赋值。这就是我所拥有的:

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
}

P.S。对不起我的英文

2 个答案:

答案 0 :(得分:0)

这样的事可能吗?

public static PlayerData importFromString(String str) {
    Gson gson = new Gson();
    Object obj = gson.fromJson(str, PlayerData.class);
    return (PlayerData) obj;
}

答案 1 :(得分:0)

我认为执行所需操作的最简单方法是将第二个方法设为静态并返回字符串中表示的对象的实例:

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);