java - 我想要通用类的 "Class<T>"和 "Class variable"

标签 java class

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

相关文章:

java - 多次射击会导致 Swing 计时器重复

Swift 创建字典 Int : Class_Type

swift - 将对象属性分配为另一个对象的函数的输入参数

java - 从 Java 中的基类访问子类字段

java - Hibernate - 在事务完成时强制清理容器资源

java - 输入字段更改后的 Wicket 数据表过滤

java - 在 java 中使用具有多态性的 Clone() 接口(interface)

java - 由于 Tomcat 中没有一些安全 .jar 文件,如何将 Tomcat 与外部 Java 连接?

python - 我应该上课吗? (Python)

java - Mockito 何时不模拟而不是调用实际方法