ecb*_*die 4 java generics casting jackson
我希望在不使用强制转换的情况下从Java中的TypeReference<E>
对象转换为Class<E>
对象.我需要使用,因为我的代码使用Jackson的方式,我需要对象,因为我想用它来推断我的应用程序中的其他通用类之一的类型.TypeReference
Class
我知道这TypeReference.getType()
会返回一个java.lang.reflect.Type对象.基本上,如果我能找到一个办法用代码,而不从铸造获得Type
到Class
,后来我想通了我的问题.
Javadoc参考文献:
你不能强制转换它:这是非常基本的Java问题 - TypeReference和Class不是从相同的基类派生的,因此它违背了语言定义.
但如果我猜对了你想要实现的目标,你可以使用以下方法转换原始(类型擦除)类JavaType
:
JavaType type = mapper.getTypeFactory().constructType(ref);
Class<?> cls = type.getRawClass();
Run Code Online (Sandbox Code Playgroud)
你可以构造JavaType
出的TypeReference
,Class
或者甚至只是基本的JDK Type
.