这是一个已知问题。现在,通过引入修复了此问题
ParameterizedTypeReference,您可以显式
继承 该参数化类型,以便在运行时提供类型信息。这称为 超类型令牌 ,它可解决类型擦除,因为子类(在这种情况下为匿名)在运行时保留
通用超类型 的 类型参数 。
但是,您不能使用
postForObject,因为该API仅支持
exchange():
ResponseEntity<CisResponse<CisResponseEntity>> res = template.exchange( rootUrl, HttpMethod.POST, null, new ParameterizedTypeReference<CisResponse<CisResponseEntity>>() {});请注意,最后一行演示了超级类型令牌的概念:您不提供文字
CisResponse.class,而是提供参数化类型的匿名实例化
ParameterizedTypeReference<T>,可以在运行时提取其子类型信息。您可以将超级类型令牌视为实现目标的
技巧
Foo<Bar<Baz>>.class
顺便说一句,在Java中,您不需要使用以下前缀对实例变量进行访问
this:如果您的对象定义了
url和
template成员,则只需使用其简单名称即可访问它们,而不必像您这样做时那样通过前缀
this.url和
this.template



