ich eine Karte erklärt haben, dieObjekt kann nicht in einem generischen Karte setzen
Verschachtelte Karten Lang eine verschachtelte Karte Abbildung von Tasten des Typs enthält Schlüssel von Typ Klasse und Werte von Typ SomeClient hat Grundsätzlich ich bin versucht, Generieren Sie eine Zuordnung des Klassentyps zu den Clients, die die Antwort des Klassentyps erzeugen.
private static final Map<Long, Map<Class<? super GenericResponse>, SomeClient<? super GenericResponse>>> someClientMap
= new HashMap<Long, Map<Class<? super GenericResponse>, SomeClient<? super GenericResponse>>>(); // <? super GenericResponse> should enable me to put subclasses of type GenericResponse in the Map
Die getSomeClient Methode ist ein generisches Verfahren, das die Klasse Typ als Argument akzeptiert und gibt den Client, die Antworten der Klasse Typ produziert (Der Typ-Klasse kann nur eine Unterklasse von GenericResponse sein. Hinweis Type-Parameter in der Methodensignatur)
Das Problem ist, dass ich einen Kompilierzeitfehler erhalte, wo ich versuche, den Klienten in die Karte zu setzen.
Der genaue Fehler ist
The method put(Long, Map<Class<? super GenericResponse>,SomeClient<? super GenericResponse>>) in the type Map<Long,Map<Class<? super GenericResponse>,SomeClient<? super GenericResponse>>> is not applicable for the arguments (long, HashMap<Class<T>,SomeClient<T>>)
Ich habe Schwierigkeiten zeigen, was genau mache ich falsch. Bitte helfen Sie.
Erklärung für SomeClient ist
public class SomeClient<T extends GenericResponse>
und für den contructor ist
public SomeClient(Class<T> clazz)
Sieht aus wie das Problem ist in 'Long' vs' long' - Sie setzen 'long' Argument, Karte erwartet' Long'. Casting hinzufügen oder 'Long.valueOf (.)' Methode verwenden –
Könnten Sie in der Frage die Deklaration von 'SomeClient' und' GenericResponse' posten? –