のサブクラスであることを、一般的な必要:Javaのジェネリック:私は抽象ジェネリッククラスを持っている特定のタイプ
public abstract class AbstractMessageHandler<T extends AbstractMessageHandler>
{
public abstract List<String> getTypesOfMessages();
public abstract void handleMessage(String message, CometClient client);
public T setResponseValues(AbstractMessage request, T response)
{
response.setCompanyId(request.getCompanyId());
response.setMessageGroup(request.getMessageGroup());
response.setUserId(request.getUserId());
response.setTimeStamp(AbstractMessage.getCurrentTimeStamp());
return response;
}
}
私はこのクラスのサブクラスであることを、一般的なサブクラスを必要とします。つまり、ジェネリックはAbstractMessageHandlerのサブクラスでなければなりません。しかし、これは私にコンパイルの問題を与える。誰でも私が間違っていることを知らせることはできますか?
おかげであなたが例えば<T extends SomeClass>
を行うことができ、あなたの一般的な定義では
コンパイラエラーをポストします。そして、うまくいけば、 'AbstractMessageHandler'が理論的に実装している' interface'のジェネリックサブクラス 'T'を必要としたいだけです。これは' MessageHandler'という名前です。関連して、 'setResponseValues'は' AbstractMessage'ではなく 'Message'をパラメータとして取るべきでしょう。これらは、実装している「インタフェース」がない場合を除き、不必要に要件を制限しています。 – pickypg
コンテキストがなければ、タイプ制約内のAbstractMessageHandler自体に型引数が必要であると思います。これがあなたの問題に最適なデザインだと確信していますか? "AbstractMessageHandler? –