我想要带有“类变量”的通用类的“ Class <t>”

时间:2019-05-29 07:11:49

标签: java class

我想获取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吗?

1 个答案:

答案 0 :(得分:1)

如果您使用杰克逊作为图书馆。您可以只使用TypeReference

TypeReference<Data<DataType>> r = new TypeReference<Data<DataType>>() {};
...
Data<DataType> data = objectMapper.readValue(json, r);

该代码将创建一个新的TypeReference匿名子类,该子类的参数为<Data<DataType>>。此类在内部使用“ hackaround”来获取通用参数,然后由Jackson进行拾取,以反序列化JSON。