我想在不使用强制转换的情况下从Java中的TypeReference<E>
对象转到Class<E>
对象。我需要使用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();
您可以从
JavaType
,TypeReference
甚至仅是基本JDK Class
构造Type
。关于java - 从TypeReference <E>转换为Class <E>而不进行转换(Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13166233/