Jas*_*son 15 java generics class jackson
基本上恰恰与这个问题相反.我想将Class <T>对象转换为TypeReference <T>对象.
我试过了:
foo(Class<T> valueType)
{
TypeReference ref = new TypeReference<T>(){};
}
Run Code Online (Sandbox Code Playgroud)
但这只是返回类的超类的类型引用.我也尝试过:
foo(Class<T> valueType)
{
TypeReference ref = new TypeReference<valueType>(){};
}
Run Code Online (Sandbox Code Playgroud)
和
foo(Class<T> valueType)
{
TypeReference ref = new TypeReference<valueType.getRawClass()>(){};
}
Run Code Online (Sandbox Code Playgroud)
但是第二个不编译.我该怎么做呢?
SLa*_*aks 17
您可以覆盖getType()以返回您的类型:
new TypeReference<T>(){
@Override
public Type getType() {
return valueType;
}
};
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的,你很可能正在解决错误的问题.你可能想要统一的是JavaType,因为这就是你的两个输入被转换成的东西,这就是杰克逊内部用于一切的东西.然后你可以有方便的方法去JavaType.