- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在测试中,我希望命中一个返回类型列表的端点。目前我有
@Test
public void when_endpoint_is_hit_then_return_list(){
//Given
ParameterizedTypeReference<List<Example>> responseType = new ParameterizedTypeReference<List<Example>>() {};
String targetUrl = "/path/to/hit/" + expectedExample.getParameterOfList();
//When
//This works however highlights an unchecked assignment of List to List<Example>
List<Example> actualExample = restTemplate.getForObject(targetUrl, List.class);
//This does not work
List<Example> actualExample = restTemplate.getForObject(targetUrl, responseType);
//This does not work either
List<Example> actualExample = restTemplate.exchange(targetUrl, HttpMethod.GET, null, new ParameterizedTypeReference<List<Example>>() {});
//Then
//Assert Results
}
getForObject 方法的问题是 ParameterizedTypeReference 使得 getForObject 方法无法解析,因为类型不匹配。
交换方法的问题是类型不兼容。必需列表,但“交换”被推断为 ResponseEntity:不存在类型变量的实例,因此 ResponseEntity 符合列表
在这种情况下,如何正确使用 ParameterizedTypeReference 来安全地返回我想要的 List 类型?
最佳答案
来自documentation :
Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity. The given ParameterizedTypeReference is used to pass generic type information:
ParameterizedTypeReference<List<MyBean>> myBean =
new ParameterizedTypeReference<List<MyBean>>() {};
ResponseEntity<List<MyBean>> response =
template.exchange("http://example.com",HttpMethod.GET, null, myBean);
所以在你的情况下你可以:
ResponseEntity<List<Example>> actualExample = restTemplate.exchange(targetUrl, HttpMethod.GET, null, new ParameterizedTypeReference<List<Example>>() {});
List<Example> exampleList = actualExample.getBody();
关于java - ParameterizedTypeReference 的正确用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896979/
我有以下带有具体化参数的内联函数来泛化 http 资源获取: inline fun getResources(): ResponseEntity> { val httpEntity = Ht
在测试中,我希望命中一个返回类型列表的端点。目前我有 @Test public void when_endpoint_is_hit_then_return_list(){ //Given
我的任务是修改旧的 Spring 应用程序,并且需要添加一些休息调用。当我尝试使用 RestTemplate 时,出现了一堆错误并结束了从 Spring 2.x 到 4.x 的升级。我现在得到: [E
我正在将现有代码迁移到父类(super class)/子类情况。见下文。 家长类里面的方法: public ResponseEntity makeRequest(HttpMethod met
我没有看到这两种方法之间有任何主要的时间复杂度差异,它们都有工作魅力,我想了解这两种方法之间的主要区别是什么 我正在从服务中获取 Student 对象的集合。 bodyToMono 参数化类型引用 p
我正在尝试使用 Spring RestTemplate 获取对象列表。我很困惑为什么选择 ParameterizedTypeReference 方法来使用 restTemplate 而不是仅使用 Ob
我在库中使用 spring RestTemplate。接受 ParameterizedTypeRecerence 并将其传递给 rest 模板进行转换的库方法的输入。 出于不相关的原因,我需要将响应主
我有一个 Spring Boot 应用程序,我正在使用 WebClient 向返回以下格式的 API 发出请求 {"results": {...}} 其中 results 字段可以有多种不同的格式。我
我有一个 Spring Boot 应用程序,我正在使用 WebClient 向返回以下格式的 API 发出请求 {"results": {...}} 其中 results 字段可以有多种不同的格式。我
我正在尝试使用 HttpRequestExecutingMessageHandler 配置网关。我面临的问题是将 setExpectedResponseType 设置为通用类型。 当你直接使用 Res
我正在构建两个应该相互通信的微服务。我使用 Eureka 作为服务注册中心。 微服务 1 -Microservice1.java @SpringBootApplication public class
我正在尝试学习 Kotlin,并测试它如何与 Spring Boot 配合使用。我的应用程序使用 mongo 数据库来存储数据,我有一个 Jersey 资源来检索数据。我正在使用 spring-boo
抽象 Controller 类需要来自 REST 的对象列表。在使用 Spring RestTemplate 时,它没有将其映射到所需的类,而是返回 Linked HashMAp public
我是一名优秀的程序员,十分优秀!