gpt4 book ai didi

java - 如何定义通用参数 Class[] 并在restTemplateBuilder.getForObject() 上使用它?

转载 作者:行者123 更新时间:2023-11-30 01:46:17 24 4
gpt4 key购买 nike

我会在 RestService 中为所有类型的 URI 和 VO 创建一个“通用” get() 。

但我不知道如何定义(并使用它)一个参数来创建通用 get(uri, className)。我试过这个:

@Service
public class RestService {

private final RestTemplate restTemplate;

public RestService(RestTemplateBuilder restTemplateBuilder) {
// set connection and read timeouts
this.restTemplate = restTemplateBuilder
.setConnectTimeout(Duration.ofSeconds(500))
.setReadTimeout(Duration.ofSeconds(500))
.build();
}

public Object[] get(String uri, Class[] className){
return this.restTemplate.getForObject(uri, className);
}

}

并尝试使用这种方式:

String uri = "https://jsonplaceholder.typicode.com/posts";

for (Post post : restService.get(uri, Post.class)) {
System.out.println(post.getTitle());
}

我收到此错误:

(argument mismatch; java.lang.Class[] cannot be converted to java.lang.Class<T>))

编辑:

感谢@Jonathan Johx,我已将参数更改为:

String uri, Class<?> className

但是我无法迭代

提前致谢

最佳答案

您需要测试它是否是一个数组并进行强制转换:

String uri = "https://jsonplaceholder.typicode.com/posts";
Class vo = Post[].class;

Object retorno = restService.get(uri, vo);
if (retorno.getClass().isArray()) {
for (int i = 0; i < Array.getLength(retorno); i++) {
Post post = (Post) Array.get(retorno, i);
System.out.println(post.getTitle());
}
}

关于java - 如何定义通用参数 Class[] 并在restTemplateBuilder.getForObject() 上使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com