コードに次のクラスがあります
public class GenericService<E> extends SpringAndroidSpiceRequest<E> {
public GenericService(Class<E> clazz) {
super(clazz);
}
@Override
public E loadDataFromNetwork() throws Exception {
return null;
}
}
これで、このクラスのコンストラクターはクラス型の Argument を受け取ります。このパラメータを削除して、直接 super(E.class) のようなことを言いたいですか? しかし、これには私のエラーが与えられます。したがって、GenericService loginService=new GenericService の場合、そのコンストラクターはパラメーター Login.class を使用して super を呼び出す必要があります。これはこのように機能しますが、E.class と言う一般的な方法ではありません。これどうやってするの ?
編集
次のクラスを単一のクラスにマージしたい
public class LoginService extends 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あります。これらのクラスが必要ない場合は、これらすべてを追加するのは本当に悪い考えです。
敬具