【发布时间】:2021-10-27 09:43:03
【问题描述】:
我正在编写一个帮助函数。 getList 将从某处获取序列化数据,并将其反序列化。
getList 总是返回一个列表。用户将指定元素的类型。预期的用法是这样的:
List<Asset> l1 = getList("Asset"); //warning Unchecked assignment is fine
List<Store> l2 = getList("Store");
//or
List<Asset> l1 = getList(Asset.class);
List<Store> l2 = getList(Store.class);
//or
List<Asset> l1 = getList<Asset>();
List<Store> l2 = getList<Store>();
我将如何修复以下实现?它无法编译,因为 className 是一个变量,而 List 需要一个类。
public static List getList(String className)
{
Genson genson = new Genson();
String data = ...
List l= genson.deserialize(data, List<className>);
~~~~~~~~~~~~~~~
return l;
}
【问题讨论】:
-
Genson 似乎是一个较少使用的库,因此我怀疑你会在这里找到很多帮助。只是通过
List.class怎么样?如果您需要有关元素类型的更多信息(即使用className,您可能需要传递其他内容(Jackson 为TypeRef对此,不知道 Genson 有什么)。 -
在genson.io/GettingStarted 上有一个geson 的入门指南。这有以下泛型类型的示例:
List<Person> persons = genson.deserialize(json, new GenericType<List<Person>>(){}); -
@Jack 我如何让
Person成为调用者可以传入的变量?