我想在不使用强制转换的情况下从Java中的TypeReference<E>对象转到Class<E>对象。我需要使用TypeReference,因为我的代码使用的方式。Jackson ,我需要Class对象,因为我想使用它来将类型推断为我的应用程序中其他通用类之一。

我知道TypeReference.getType()将返回java.lang.reflect.Type对象。基本上,如果我能找到一种使用代码而不用强制转换从TypeClass的方法,那么我就知道了我的问题。

Javadoc引用:

  • http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html
  • http://jackson.codehaus.org/1.9.4/javadoc/org/codehaus/jackson/type/TypeReference.html
  • 最佳答案

    您不能转换它:这是一个非常基本的Java问题-TypeReference和Class不是从相同的基类派生的,因此它违反了语言定义。

    但是,如果我猜对了要达到的目标,则可以使用JavaType转换原始(类型擦除的)类:

    JavaType type = mapper.getTypeFactory().constructType(ref);
    Class<?> cls = type.getRawClass();
    

    您可以从JavaTypeTypeReference甚至仅是基本JDK Class构造Type

    关于java - 从TypeReference <E>转换为Class <E>而不进行转换(Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13166233/

    10-11 19:18