不,这不是错误。这是
ParameterizedTypeReference黑客工作方式的结果。
如果看一下它的实现,它会使用
Class#getGenericSuperclass()哪些状态
返回表示该类表示的实体的直接超类的Type(class, interface, primitive type or void)。
如果超类是参数化类型,则Type返回的对象必须准确反映源代码中使用的实际类型参数。
所以,如果你使用
new ParameterizedTypeReference<ResponseWrapper<MyClass>>() {}
它将准确地返回
Typefor ResponseWrapper<MyClass>。
如果你使用
new ParameterizedTypeReference<ResponseWrapper<T>>() {}
它会准确地返回
Typefor,
ResponseWrapper<T>因为那是它在源代码中的样子。
当Spring看到T实际上是一个
TypeVariable对象时,它不知道要使用的类型,因此它使用其默认值。
你不能使用ParameterizedTypeReference提议的方式,就接受任何类型的意义而言,使其成为通用的。考虑编写映射到该类的预定义Map键的with键。
ClassParameterizedTypeReference
你也可以继承
ParameterizedTypeReference并覆盖其
getType方法返回一个适当的创建
ParameterizedType,通过IonSpin的建议。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)