Si je comprends bien, il existe plusieurs façons (peut-être d'autres également) de créer une copie superficielle d'un Map
en 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();
Une voie est-elle préférée à l'autre, et si oui, pourquoi?
Une chose qui mérite d'être mentionnée est que la deuxième méthode donne un avertissement "Cast non coché". Il faut donc en rajouter @SuppressWarnings("unchecked")
pour le contourner, ce qui est un peu irritant (voir ci-dessous).
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}