ich eine abstrakte generische Klasse haben:Java Generics: Erfordern allgemeine Unterklasse eines bestimmten Typs sein
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;
}
}
Ich brauche die allgemeine Unterklasse eine Unterklasse dieser Klasse zu sein. In anderen Worten, das generische muss eine Unterklasse von AbstractMessageHandler sein. Dies gibt mir jedoch Kompilierungsfragen. Kann mir jemand sagen, was ich falsch mache?
Dank
Geben Sie den Compilerfehler ein. Und hoffentlich wollen Sie wirklich nur eine generische Unterklasse, 'T', als diejenige der' Schnittstelle', die 'AbstractMessageHandler' theoretisch implementiert, die ich mir vorstelle, heißt' MessageHandler'. In Verbindung damit sollte der 'setResponseValues' höchstwahrscheinlich als Parameter eine 'Message' und nicht' AbstractMessage' nehmen. Dies sind unnötig einschränkende Anforderungen, es sei denn, es gibt einfach keine "Schnittstelle", die sie implementieren. – pickypg
Ohne Kontext würde ich mir vorstellen, dass der AbstractMessageHandler in Ihrer Typ-Einschränkung selbst ein Typargument benötigt. Sind Sie sicher, dass dies das beste Design für Ihr Problem ist? Oder meintest du 'AbstractMessageHandler? ' –