2013-12-18 3 views
5

Wie kann ich eine HashMap zum Einfügen von Sammlungen und Objekten instanziieren ?.Wie kann ich eine generische HashMap zum Einfügen von Sammlungen und Objekten erstellen?

//it's wrong 
Map<String,?>params=new HashMap<String,? > 
List<Person> lstperson=getPerson(); 
params.put("person",lstperson); 
params.put("doc",objectDoc); 
params.put("idSol",new Long(5)); 
service.method(params); 

//method 

public void method(Map<String, ?> params); 
+2

Sie können kein Platzhalterzeichen als Typargument verwenden. –

+1

Verwenden Sie 'Map ' –

+1

FWIW, das scheint wie ein schlechter Code-Geruch: Es sieht so aus, als ob Sie diese Daten in einer Klasse speichern sollten, nicht eine untypisierte 'Map'. –

Antwort

12

Deklarieren Sie die Hash-Karte als

Map<String,Object> params = new HashMap<String,Object>(); 

Sie die Deklaration halten

public void method(Map<String, ?> params); 

wie es ist, solange das Verfahren jeder nur versucht, von der Karte zu lesen.

+0

Wie kann ich nach dem Erstellen einer Hashmap wie dieser ein Objekt vom generischen Typ zur hashmap hinzufügen? – gromit190

2

Sie benötigen diese Praxis

Map<String,Object>params=new HashMap<String,Object>() 

Aber es ist nicht gut

Map<String,?>params=new HashMap<String,? > 

mögen sich ändern alle Arten von Objekten in einzelne Karte zu setzen. Besser können Sie POJO erstellen und zur Karte hinzufügen.

+0

Es scheint, dass die Karte selbst ein POJO sein sollte. –

3

Alle Klassen in Java erweitern Object. So können Sie Objekt für einen Werttyp in einer Karte verwenden, z. B.

Map<String, Object> params = new HashMap<String, Object> 
Verwandte Themen