gson 树的递归适配器

kg7wmglp  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(226)

我对gson有一个特殊的用例。
我有以下结构:

public abstract class BaseNode {
    BaseNode left;
    BaseNode right;
}

public class DerivedNode extends BaseNode {
    int val;
}

如你所见,这是一个二叉树,我想为树中的所有节点应用一个适配器,这样我就可以将它们反序列化为DerivedNode,而不是BaseNode,否则会抛出无法示例化抽象类的问题。

...
Gson gson = new new GsonBuilder().registerTypeAdapter(BaseNode.class, new 
     TypeAdapter<ObjectBasedPermission>() {
        @Override
          public void write(JsonWriter out, ObjectBasedPermission value) throws IOException {}

          @Override
          @SuppressWarnings("ALL")
          public ObjectBasedPermission read(JsonReader in) throws IOException {
            return gson.fromJson(in, DerivedNode);
          }
     }}).create();

我的问题是我可以这样做吗?这样安全吗?gson的未来更新会影响这个代码片段吗?

voj3qocg

voj3qocg1#

对于任何有同样问题人,InstanceCreator解决了我的问题

相关问题