我想获取 JsonDeserialize 的 Generic 类的类型变量。
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 吗??
最佳答案
如果您使用 Jackson 作为您的库。您可以使用 TypeReference
:
TypeReference<Data<DataType>> r = new TypeReference<Data<DataType>>() {};
...
Data<DataType> data = objectMapper.readValue(json, r);
此代码将创建 TypeReference
的新匿名子类参数化为 <Data<DataType>>
。此类在内部使用“hackaround”来获取通用参数,然后 Jackson 会选取该参数来反序列化您的 JSON。
关于java - 我想要通用类的 "Class<T>"和 "Class variable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354932/