我对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的未来更新会影响这个代码片段吗?
1条答案
按热度按时间voj3qocg1#
对于任何有同样问题人,InstanceCreator解决了我的问题