gpt4 book ai didi

java - 在泛型方法java中传递类类型

转载 作者:行者123 更新时间:2023-12-01 10:21:14 25 4
gpt4 key购买 nike

具有 TestJsonData 定义的接口(interface)类。

  public interface ICasAuthentication {
<T> List<T> TestJsonData();
}

接口(interface)类的实现方法

public class CasAuthentication implements ICasAuthentication {
private IServiceHandler _iServiceHandler = null;
public CasAuthentication(ServiceHandler ServiceHandler) {
this._iServiceHandler = ServiceHandler;
}

public <T>List<T> TestJsonData() {
List<T> response = null;
return response = _iServiceHandler.<T>genericGetAll("https://api.github.com/users/hadley/orgs", MethodTypes.GET.toString(), null);
}

}

又是一个接口(interface)类,其定义方法为 genericGetAll

public interface IServiceHandler
{

<T>List<T> genericGetAll(String destinationUrl, String method, HashMap<String, String> params);
}

接口(interface)类的实现方法

public class ServiceHandler implements IServiceHandler {
public String response = null;
private static Gson gson = new Gson();
public ServiceHandler() {

}

通用响应不是 MyClass 类型。仍然无法引用类类型。 T 类型仍然没有引用 Myclass 类型

 public <T> 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 <T> List<T> createListResponseHandler(String string_response) {
return gson.fromJson(string_response, new TypeToken<List<T>>() {
}.getType());
}
}

如果我将 MyClass 硬编码在 gson.fromJson(string_response, new TypeToken<List<MyClass>>() 中。我无需硬编码即可获取类类型,响应就像您在图片中看到的那样。

下面的代码正在调用方法TestJsonData()。我已经添加了隐式类型,但仍然无法找到解决方案

List<MyClass> res = _iCasAuthentication.<MyClass>TestJsonData();

下图显示了没有硬编码 Myclass 的响应值。

without hard code

下图显示了硬编码 Myclass 的响应值。

with hardcode value

最佳答案

如果您省略显式设置类型参数并且编译器无法推断它,则它将默认为 Object

为了显式设置它,您应该这样做:

List<MyClass> res = callingMethod.<MyClass>createListResponseHandler("");

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

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