2013-12-18 27 views
5

Come posso creare un'istanza di una HashMap per mettere raccolte e oggetti ?.Come posso creare una HashMap generica per inserire collezioni e oggetti?

//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

Non è possibile utilizzare un carattere jolly come argomento di tipo. –

+1

usa 'Map ' –

+1

FWIW, sembra un cattivo odore di codice: sembra che tu debba memorizzare questi dati in una classe, non in una 'Map' non tipizzata. –

risposta

12

dichiarare la mappa di hash come

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

È possibile ottenere la dichiarazione di

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

come è, a patto che il metodo solo ogni cerca di leggere dalla mappa.

+0

Dopo aver creato una hashmap come questa, come posso aggiungere un oggetto di tipo generico all'hashmap? – gromit190

2

è necessario modificare

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

a come questo

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

Ma la sua non buona pratica di mettere tutti i tipi di oggetti in un'unica mappa. Meglio puoi creare POJO e aggiungerlo alla mappa.

+0

Sembra che la mappa stessa debba essere un POJO. –

3

Tutte le classi in Java estende Object. quindi è possibile utilizzare l'oggetto per un tipo di valore in una mappa, ad esempio

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