2
この状況に対処してください。私はクラス2つのオブジェクトが含まれRequestContextの持っJavaジェネリックス:reduntantパラメータを削除するには
public abstract class BasicCommand<RequestT, ResponseT> {
protected Collection<ResponseT> execute(RequestT request) {
return Something;
}
}
:
は、私は抽象クラス BasicCommand持って今public class RequestContext<RequestT> {
private RequestT requestT;
private HttpRequest httpRequest;
}
を、私は私のBasicCommandどの要求を拡張したいですパラメータ化されていますRequestContextと応答はパラメタですResponseT:
public abstract class Command<RequestContext<RequestT>, ResponseT> extends BasicCommand {
@Override
public Collection<ResponseT> execute(RequestContext<RequestT> request) {
return something();
}
}
このコードはコンパイルされません。あなたはRequestTが複製されたパラメータを見ることができるように
public abstract class Command<T extends RequestContext<RequestT>, RequestT, ResponseT>
extends BasicCommand<RequestContext<RequestT>, ResponseT> {
}
:いくつかの試行後
は、最終的に私はこの思い付きました。
だけコマンドのこの特定の実装を見て:
public class SpecificCommand extends Command<RequestContext<String>, String, String> {
}
reduntant paremeterは本当に刺激性です。 の署名を変更するにはどうすればいいですか? BodyCommandが指定されています(変更できません)。 ありがとう!
ありがとう!この答えは命を救う人です! –
@EgorStepanovようこそ。 – Eran