,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 吗?

标签: javaclass

解决方案


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

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

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


推荐阅读