为什么RestTemplate getForEntity返回一个对象数组而不是一个List?

时间:2018-06-20 13:05:30

标签: spring-boot resttemplate

我们正在与同事讨论以下调用为何在ResponseEntity中返回数组的问题:

    ResponseEntity<WakeupProviderSettingsDTO[]> rep = 
restTemplate.getForEntity(url, WakeupProviderSettingsDTO[].class);

代替List<WakeupProviderSettingsDTO>或某物。

为什么我们不能简单地将实体作为列表传输?

是因为There are no Class literals for parameterized types吗?

这是表演吗?是因为响应集的大小固定吗?

1 个答案:

答案 0 :(得分:1)

正如您在那篇文章中指出的。

  

您不能将.class令牌与参数化类型一起使用

这是使用通用类型List的罕见情况之一。所以你可以这样

ResponseEntity<List> rep = restTemplate.getForEntity(url, List.class);

但是,这样做当然会失去参数化类型所带来的优势。

如果您希望将List与参数化类型一起使用,仍然可以使用ParameterizedTypeReference进行操作。

要回答您的问题,这与性能或固定大小响应无关,这是java泛型的局限性。