所有,我可能对 Java 中的 Generic 有一个基本的误解,
为什么我们不能写一个 Java Generic 子类来继承它的父 Generic 类?
定义如:
public class JsonResponse<T> implements Response {
}
但是我定义了另一个子类来继承它:
public class MeetingClientResponse<T> extends JsonResponse<T> {
}
我将另一个调用者类定义为:
public interface HttpExecutor<T extends Response> {
}
实现它的类是:
public class DefaultHttpExecutor<T extends Response> implements HttpExecutor<T> {
public DefaultHttpExecutor(ResponseHandler<T> responseHandler) {
this.responseHandler = responseHandler;
}
}
public class JsonResponseHandler<T> implements ResponseHandler<JsonResponse<T>> {
}
public class ScheduleMeetingResponseHandler extends
JsonResponseHandler<ScheduleMeetingResponseVO> {
}
handler = ScheduleMeetingResponseHandler.newIntance()
当我这样使用时,它没有编译错误:
HttpExecutor<JsonResponse<ScheduleMeetingResponseVO>> httpExecutor =
new DefaultHttpExecutor
<JsonResponse<ScheduleMeetingResponseVO>>(handler);
但是当我这样使用时,它会在 Eclipse 中编译错误:
HttpExecutor<MeetingClientResponse<ScheduleMeetingResponseVO>> httpExecutor =
new DefaultHttpExecutor
<MeetingClientResponse<ScheduleMeetingResponseVO>>(handler);
Eclipse 提示错误为:构造函数 DefaultHttpExecutor 未定义