gpt4 book ai didi

java - 我可以实例化一个父类(super class)并根据提供的参数实例化一个特定的子类吗

转载 作者:行者123 更新时间:2023-11-29 06:12:06 24 4
gpt4 key购买 nike

我正在使用谷歌的 GSON 包 http://code.google.com/p/google-gson/

我正在将 JSON 转换为 Java。

我有一段代码可以用来进行转换。

Gson gson = new Gson();
Type collectionType = new TypeToken<Collection<QueryProperty>>() {}.getType();
Collection<QueryProperty> queryProperties = gson.fromJson(query, collectionType);

我的 QueryProperty 类有这些字段(带有 getter/setter):

int id;
String uri;
String name;
Set<QueryValue> values;
String selected;

QueryValue 类以前有这些字段(带有 getters/setters):

int id;
String uri;
String name;

我现在希望能够拥有不同类型的QueryValue。

我想添加一个 NumericQueryValue 类(QueryValue 的子类),这样我就可以传入一组用于查询数据库的边界。

double lower;
double upper;

并且想要创建一个新的 ResourceQueryValue(QueryValue 的子类),它看起来与 QueryValue 过去一样:

int id;
String uri;
String name;

无论如何我可以完成这项工作吗?它有一个通用的 QueryValue 类,但根据 JSON 提供的参数返回正确的子类。

如果我不清楚,请告诉我。

最佳答案

除了实现自定义反序列化处理之外,Gson 目前没有简单的多态反序列化机制。下一个版本看起来会提供一个内置的解决方案。

StackOverflow.com 上关于此主题的问题和答案(部分带有示例):

关于java - 我可以实例化一个父类(super class)并根据提供的参数实例化一个特定的子类吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com