gpt4 book ai didi

java - Webflux Webclient 和通用类型

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:43 25 4
gpt4 key购买 nike

我正在尝试构建一个将使用 REST api 的通用类。 API 根据 url 返回对象列表。

我已经构建了一个通用类

public class RestConsumer<T> {
WebClient client;

public RestConsumer(){
//Initialize client
}

public List<T> getList(String relativeUrl){
try{
return client
.get()
.uri(relativeUrl)
.retrieve()
.bodyToMono(new ParameterizeTypeReference<List<T>> (){}
.block()
catch(Exception e){}
}

}

问题在于 T 在编译时被 Object 替换,整个过程返回 LinkedHashMap 的 List 而不是 T 的 List。我尝试了很多解决方法,但没有运气。有什么建议吗?

最佳答案

我遇到了同样的问题,为了工作,我添加了 ParameterizedTypeReference 作为该函数的参数。

public <T> List<T> getList(String relativeUrl, 
ParameterizedTypeReference<List<T>> typeReference){
try{
return client
.get()
.uri(relativeUrl)
.retrieve()
.bodyToMono(typeReference)
.block();
} catch(Exception e){
return null;
}
}

并调用该函数

ParameterizedTypeReference<List<MyClass>> typeReference = new ParameterizedTypeReference<List<MyClass>>(){};
List<MyClass> strings = getList(relativeUrl, typeReference);

关于java - Webflux Webclient 和通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378161/

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