gpt4 book ai didi

java - 类类型引用未在 java 泛型类或方法中传递

转载 作者:行者123 更新时间:2023-11-29 20:06:17 26 4
gpt4 key购买 nike

这是调用泛型类方法的方法。

ServiceHandler<MyClass> serviceHandler = new ServiceHandler<MyClass>();
List<MyClass> res = serviceHandler.genericGetAll("https://api.github.com/users/hadley/orgs", MethodTypes.GET.toString(), null);

这是带有泛型方法的泛型类

public class ServiceHandler<T>{
public ServiceHandler() {

}
public List<T> genericGetAll(String destinationUrl, String method, HashMap<String, String> params) {
List<T> genericResponse = null;
String httpResponse = httpClient(destinationUrl, method, params);
genericResponse = createListResponseHandler(httpResponse);
return genericResponse;

}
private List<T> createListResponseHandler(String string_response) {
return gson.fromJson(string_response, new TypeToken<List<T>>() {
}.getType());
}

现在的问题是我从来没有在 T 中得到 MyClass 引用。我哪里做错了? .我已经做了很多谷歌,但仍然没有找到解决方案。

我的问题是如何在 T 中获取 MyClass 引用。因为我需要使用 gson 序列化数据。

我试过了。但是还是没有解决

List<MyClass> res = serviceHandler.<MyClass>genericGetAll("https://api.github.com/users/hadley/orgs", MethodTypes.GET.toString(), null);

最佳答案

通用类型标记不起作用。

您需要传入 new TypeToken<List<MyClass>>() {}作为 ServiceHandler 的构造函数参数:

public class ServiceHandler<T> {
private final TypeToken<List<T>> typeToken;

public ServiceHandler(TypeToken<List<T>> typeToken) {
this.typeToken = typeToken;
}

// ...

private List<T> createListResponseHandler(String string_response) {
return gson.fromJson(string_response, typeToken.getType());
}
}

并实例化使用:

ServiceHandler<MyClass> serviceHandler =
new ServiceHandler<>(new TypeToken<MyClass>() {});

关于java - 类类型引用未在 java 泛型类或方法中传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35623267/

26 4 0
文章推荐: javascript - EmberJS 应用前端的多余
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com