A quanto ho capito, ci sono un paio di modi (forse anche altri) per creare una copia superficiale di a Map
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();
Si preferisce un modo rispetto all'altro e, in caso affermativo, perché?
Una cosa degna di nota è che il secondo modo fornisce un avviso "Cast non controllato". Quindi devi aggiungere @SuppressWarnings("unchecked")
per aggirare il problema, 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();
}