spring6 获取泛型类型
时间: 2023-07-08 09:47:32 浏览: 165
Spring 中优雅的获取泛型信息的方法
在 Spring 5 之前,获取泛型类型有以下两种方式:
1. 使用 TypeReference 类
TypeReference 是 Jackson JSON 库提供的一个类,可以用来获取泛型类型。在 Spring 中,可以通过继承 TypeReference 类来获取泛型类型,例如:
```
public class MyTypeReference<T> extends TypeReference<T> {
}
```
然后,在 Spring 中使用该类:
```
@Autowired
private ObjectMapper objectMapper;
public void myMethod() {
MyTypeReference<List<MyObject>> typeRef = new MyTypeReference<List<MyObject>>() {};
List<MyObject> list = objectMapper.readValue(json, typeRef);
}
```
2. 使用 ParameterizedTypeReference 类
ParameterizedTypeReference 是 Spring 5 提供的一个类,可以用来获取泛型类型。在 Spring 中,可以通过继承 ParameterizedTypeReference 类来获取泛型类型,例如:
```
public class MyTypeReference<T> extends ParameterizedTypeReference<T> {
}
```
然后,在 Spring 中使用该类:
```
@Autowired
private RestTemplate restTemplate;
public void myMethod() {
MyTypeReference<List<MyObject>> typeRef = new MyTypeReference<List<MyObject>>() {};
ResponseEntity<List<MyObject>> response = restTemplate.exchange(url, HttpMethod.GET, null, typeRef);
List<MyObject> list = response.getBody();
}
```
从 Spring 5 开始,推荐使用 ParameterizedTypeReference 类来获取泛型类型。
阅读全文