Se ho capito bene, ci sono un paio di modi (forse altri) per creare una copia di un Map
in Java:copia dei riferimenti una mappa in Java
Map<String, Object> data = new HashMap<String, Object>();
Map<String, Object> shallowCopy;
// first way
shallowCopy = new HashMap<String, Object>(data);
// second way
shallowCopy = (Map<String, Object>) ((HashMap<String, Object>) data).clone();
è un modo preferito su l'altro, e se sì, perché?
Una cosa che vale la pena menzionare è che il secondo modo fornisce un avviso "Cast non selezionato". Quindi devi aggiungere @SuppressWarnings("unchecked")
per aggirarlo, il che è un po 'irritante (vedi sotto).
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}
Nizza risposta, grazie. – dcp
Sì, questa è una delle mie parti preferite del libro. – polygenelubricants
Non mi piace dire che clone() è rotto. Preferisco dire che il clone era una pessima decisione progettuale e può danneggiarti molto se non lo usi correttamente.Inoltre, potresti non fidarti mai dei metodi clone() di altre persone. Quindi finiamo allo stesso modo, cerchiamo di evitarlo, ma non è rotto. – santiagobasulto