すべて、Java の Generic について基本的な誤解があるかもしれませんが、
親の Generic クラスを継承する Java Generic Son クラスを作成できないのはなぜですか?
次のように定義します。
public class JsonResponse<T> implements Response {
}
しかし、それを継承する別の息子クラスを定義します。
public class MeetingClientResponse<T> extends JsonResponse<T> {
}
別の呼び出し元クラスを次のように定義します。
public interface HttpExecutor<T extends Response> {
}
impl it クラスは次のとおりです。
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 は未定義です