Hallo,
ich habe eine Klassenhierarchie von Message-Klassen mit
usw.
Jetzt gibt es ein generisches MessageHandler-Interface. Entsprechend:
So weit so schön. Nun kommt dazu ein MessageManager, der Message-Objekte über eine Netzwerkschnittstelle empfängt und an die MessageHandler verteilen soll. Er besitzt eine Map mit dem Message-Class-Objekt als Key und einem MessageHandler vom entsprechenden Typ als Value. Beim Empfangen von Messages bekommt der Manager diese allerdings als Objekt vom Typ Message und müßte sie, bevor er sie verteilen kann, entsprechend irgendwie downcasten. Allerdings soll der Manager nicht jede Message-Unterklasse kennen müssen, weshalb der Downcast dynamisch erfolgen muß.
Der erste Versuch an der Stelle war
, was aber nur folgende Fehlermeldung bringt:
The method handleMessage(MessageConnection, capture-of ? extends Message) in the type MessageHandler<capture-of ? extends Message> is not applicable for the arguments (MessageConnection, capture-of ? extends Message)
Läßt sich das irgendwie hinbekommen?
Thx!
Mathias
ich habe eine Klassenhierarchie von Message-Klassen mit
Code:
class Message ...
class UserLoginMessage extends Message ...
usw.
Jetzt gibt es ein generisches MessageHandler-Interface. Entsprechend:
Code:
class UserLoginMessageHandler implements MessageHandler<UserLoginMessage> ...
So weit so schön. Nun kommt dazu ein MessageManager, der Message-Objekte über eine Netzwerkschnittstelle empfängt und an die MessageHandler verteilen soll. Er besitzt eine Map mit dem Message-Class-Objekt als Key und einem MessageHandler vom entsprechenden Typ als Value. Beim Empfangen von Messages bekommt der Manager diese allerdings als Objekt vom Typ Message und müßte sie, bevor er sie verteilen kann, entsprechend irgendwie downcasten. Allerdings soll der Manager nicht jede Message-Unterklasse kennen müssen, weshalb der Downcast dynamisch erfolgen muß.
Der erste Versuch an der Stelle war
Code:
message.getClass().cast(message)
The method handleMessage(MessageConnection, capture-of ? extends Message) in the type MessageHandler<capture-of ? extends Message> is not applicable for the arguments (MessageConnection, capture-of ? extends Message)
Läßt sich das irgendwie hinbekommen?
Thx!
Mathias