Si j'ai bien compris, il existe deux manières (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 façon est-elle préférable à une autre, et si oui, pourquoi?
Une chose à noter est que la deuxième façon donne un avertissement "Distribution incontrôlée". Il faut donc ajouter @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();
}