【问题标题】:How to use generic classes with Gson如何在 Gson 中使用泛型类
【发布时间】:2015-07-07 07:13:47
【问题描述】:

我尝试做这样的事情:

Poperty<Integer> prop;
JsonObject jsonObject = (JsonObject) parser.parse(string);

if(jsonObject.get("type").equals("Integer")){
    prop = gson.fromJson(jsonObject, Property<Integer>.class);
}
else if{...}

问题出在:Property&lt;Integer&gt;.class。 是否有可能以某种方式传递通用.class

【问题讨论】:

  • 类对象表示运行时编译的源文件。因此,这些对象不能采用通用参数。它们代表类型为 T 的类。Property.class 将为您提供匹配的类对象,但我不知道 Gson 是如何工作的。
  • 是的,我知道,代码只是为了阐明我想要实现的目标。非泛型 Property.class 作为参数会起作用,但这不是我想要的。

标签: java generics gson


【解决方案1】:

是的,将Property&lt;Integer&gt;.class 替换为new TypeToken&lt;Property&lt;Integer&gt;&gt;(){}.getType()

就像反序列化 List&lt;Integer&gt; 时所做的那样。

【讨论】:

  • 有趣的是,我如何在 24 小时内两次回答同一个问题... :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
相关资源
最近更新 更多