我想返回ResponseEntity<List<Payment>>
的格式类型,如何在保持泛型的同时List<Payment>
,使用restTemplate.getForEntity
返回正确的数据类型。
下面的代码是错误的,不兼容的返回类型:
@GetMapping
public ResponseEntity<List<Payment>> getPayment(Payment payment) {
return restTemplate.getForEntity(SERVERURL + "/payment", List.class);
}
提示信息:
Required type:
ResponseEntity <List<Payment>>
Provided:
ResponseEntity<List>
Incompatible equality constraint: List<Payment> and List
将返回类型去掉泛型,返回类型为 ResponseEntity<List>,可以解决兼容问题并返回数据。
@GetMapping
public ResponseEntity<List> getPayment(Payment payment) {
return restTemplate.getForEntity(SERVERURL + "/payment", List.class);
}
但是如何做,才能返回类型匹配 ResponseEntity<List<Payment>>。
@GetMapping
public ResponseEntity<List<Payment>> getPayment(Payment payment) {
List<Payment> list = new ArrayList<>();
return restTemplate.getForEntity(SERVERURL + "/payment", list.getClass());
}
错误提示:
Required type:
ResponseEntity <List<Payment>>
Provided:
ResponseEntity <capture of ? extends List>
Incompatible equality constraint: List<Payment> and capture of ? extends List
1
chendy 2020-06-15 19:00:00 +08:00 2
写一个 public class X extens ArrayList<Payment> ,然后参数里放 X.class
或者用 ParameterizedTypeReference<List<Payment>>,但是有点长而且只能用 exchange |
2
nthin0 2020-06-15 19:06:23 +08:00 1
restTemplate.exchange(requestEntity, new ParameterizedTypeReference<List<Payment>>() {});
|
5
hantsy 2020-06-15 20:17:35 +08:00 1
也可以用数组 payment[] 封装结果 。
|
7
kennylam777 2020-06-20 18:54:52 +08:00
exchange +1 , getForEntity 對 Map/List 封裝就是個坑
|
8
siweipancc 2020-06-21 23:18:06 +08:00 via iPhone
:D 一直用 exchange,没发现这个问题,受教了
|