gpt4 book ai didi

java - 使用通用类型参数类

转载 作者:行者123 更新时间:2023-12-01 18:50:15 26 4
gpt4 key购买 nike

我的代码中有以下类

public class GenericService<E> extends  SpringAndroidSpiceRequest<E> {
public GenericService(Class<E> clazz) {
super(clazz);

}
@Override
public E loadDataFromNetwork() throws Exception {
return null;
}
}

现在,此类的构造函数采用类类型的参数。我想去掉这个参数,直接说 super(E.class) 之类的?但这是我的一个错误。所以如果我 GenericService loginService=new GenericService该构造函数应使用参数 Login.class 调用 super。这就像这样工作,但不是 E.class 的通用方式。我怎样才能做到这一点 ?

编辑

我想将以下类合并为一个类

公共(public)类LoginService扩展SpringAndroidSpiceRequest {

private Login.Request loginRequest;
private final String loginRequestURL = "/login";

public LoginService() {
super(Login.Response.class);
}

public final Login.Response loadDataFromNetwork() throws Exception {

Uri.Builder uriBuilder = Uri.parse(
ProfileInfo.getActiveProfile().getbaseURL() + loginRequestURL)
.buildUpon();
String url = uriBuilder.build().toString();

return getRestTemplate().postForObject(url, loginRequest,
Login.Response.class);
}

@Override
public final String createCacheKey() {
return loginRequest.getUsername() + "" + loginRequest.getPassword();
}

}

public class ForgetPasswordService extends
SpringAndroidSpiceRequest<ForgetPassword.Response> {

private final String forgotPasswordURL = "/forgotpassword";

public ForgetPasswordService() {
super(ForgetPassword.Response.class);
}

public final ForgetPassword.Response loadDataFromNetwork() throws Exception {

Uri.Builder uriBuilder = Uri
.parse(ProfileInfo.getActiveProfile().getbaseURL()
+ forgotPasswordURL).buildUpon();
String url = uriBuilder.build().toString();
return getRestTemplate().postForObject(url, forgotPasswordRequest,
ForgetPassword.Response.class);
}

public final String createCacheKey() {
return forgotPasswordRequest.getPhoneOrEmailAddress();
}

}

两个类都是相同的。两者之间唯一的区别是它们给出的响应类型。现在我大约有 23 个这样的类(class)。如果不需要的话添加所有这些类确实是个坏主意。

亲切的问候

最佳答案

由于类型删除,您不能这样做。用作类型参数的类的任何详细信息都不会进入运行时类。这是 Java 泛型的限制

参见http://docs.oracle.com/javase/tutorial/java/generics/erasure.html

关于java - 使用通用类型参数类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130658/

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