栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在具有通用参数的通用方法中使用Spring RestTemplate

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在具有通用参数的通用方法中使用Spring RestTemplate

不,这不是错误。这是

ParameterizedTypeReference
黑客工作方式的结果。

如果看一下它的实现,它会使用

Class#getGenericSuperclass()
哪些状态

返回表示该类表示的实体的直接超类的Type(class, interface, primitive type or void)。

如果超类是参数化类型,则Type返回的对象必须准确反映源代码中使用的实际类型参数。

所以,如果你使用

new ParameterizedTypeReference<ResponseWrapper<MyClass>>() {}

它将准确地返回

Typefor ResponseWrapper<MyClass>

如果你使用

new ParameterizedTypeReference<ResponseWrapper<T>>() {}

它会准确地返回

Type
for,
ResponseWrapper<T>
因为那是它在源代码中的样子。

当Spring看到T实际上是一个

TypeVariable
对象时,它不知道要使用的类型,因此它使用其默认值。

你不能使用ParameterizedTypeReference提议的方式,就接受任何类型的意义而言,使其成为通用的。考虑编写映射到该类的预定义Map键的with键。

ClassParameterizedTypeReference

你也可以继承

ParameterizedTypeReference
并覆盖其
getType
方法返回一个适当的创建
ParameterizedType
,通过IonSpin的建议。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415032.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号