作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想从 TypeReference<E>
开始反对 Class<E>
Java 中的对象,不使用转换。我需要使用 TypeReference
由于我的代码使用 Jackson 的方式,我需要 Class
对象,因为我想用它来将类型推断为我应用程序中的其他泛型类之一。
我知道 TypeReference.getType()
将返回 java.lang.reflect.Type目的。基本上,如果我能找到一种无需转换即可使用代码的方法来从 Type
获取至 Class
, 然后我就找到了我的问题。
Javadoc 引用:
最佳答案
你不能转换它:这是非常基本的 Java 问题——TypeReference 和 Class 不是从同一个基类派生的,所以它违反了语言定义。
但如果我猜对了你想要实现的目标,你可以使用 JavaType
转换原始(类型删除)类:
JavaType type = mapper.getTypeFactory().constructType(ref);
Class<?> cls = type.getRawClass();
您可以从 TypeReference
、Class
或什至只是基本的 JDK Type
构建 JavaType
。
关于java - 从 TypeReference<E> 转换为 Class<E> 而无需强制转换 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166233/
我是一名优秀的程序员,十分优秀!