从 Class<T> 转换为 TypeReference<T>

2022-09-02 03:42:01

基本上与这个问题正好相反。我想将 Class<T> 对象转换为 TypeReference<T> 对象。

我试过:

foo(Class<T> valueType)
{
   TypeReference ref = new TypeReference<T>(){}; 
}

但这只是返回类的超类的类型引用。我还尝试了:

foo(Class<T> valueType)
{
   TypeReference ref = new TypeReference<valueType>(){}; 
}

foo(Class<T> valueType)
{
   TypeReference ref = new TypeReference<valueType.getRawClass()>(){}; 
}

但后两个没有编译。我该怎么做?


答案 1

您可以覆盖以返回您的类型:getType()

new TypeReference<T>(){
    @Override
    public Type getType() {
        return valueType;
    }
}; 

答案 2

正如其他人所指出的,你很可能正在解决错误的问题。你可能想要统一的实际上是,因为这是你的两个输入被转换成的,这就是杰克逊内部用于一切的东西。然后你可以有方便的方法到达.JavaTypeJavaType