我想获取JsonDeserialize的通用类的类型变量。
Class Data<T> {
private T data;
}
Class DataType {
private String dummy;
}
Class dataTypeClass = DataType.class;
// I want get this.
Class dataClass = Data<dataTypeClass>.class;
我已经这样尝试过了,它不起作用。
我可以获取Data.class吗?
答案 0 :(得分:1)
如果您使用杰克逊作为图书馆。您可以只使用TypeReference
:
TypeReference<Data<DataType>> r = new TypeReference<Data<DataType>>() {};
...
Data<DataType> data = objectMapper.readValue(json, r);
该代码将创建一个新的TypeReference
匿名子类,该子类的参数为<Data<DataType>>
。此类在内部使用“ hackaround”来获取通用参数,然后由Jackson进行拾取,以反序列化JSON。