您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

无法获得通用ResponseEntity <T>,其中T是通用类“ SomeClass <SomeGenericType>”

无法获得通用ResponseEntity <T>,其中T是通用类“ SomeClass <SomeGenericType>”

通过引入修复了该问题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:如果你的对象定义了urland template成员,则只需使用其简单名称即可访问它们,而不必像你这样做时那样通过前缀this.urlthis.template

其他 2022/1/1 18:22:21 有499人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶