Java : caster un Object en Map

Boris HUISGEN
|
Alors le casse-tête du jour : comment convertir un Object en une Map ?
Solution avec dans mon cas une Map - ce qui constitue toute la difficulté - :
Object ret;
Map<Object, Object> map;
ret = getData();
map = safeCastMap(ret, Object.class, Object.class);
Voici les fonctions de vérifications nécessaires :
@SuppressWarnings({ "unchecked" })
public static <K, V> Map<K, V> safeCastMap(Object map, Class<K> keyType, Class<V> valueType) {
checkMap(map);
checkMapContents(keyType, valueType, (Map<?, ?>) map);
return (Map<K, V>) map;
}
private static void checkMap(Object map) {
checkType(Map.class, map);
}
private static <K, V> void checkMapContents(Class<K> keyType, Class<V> valueType, Map<?, ?> map) {
for (Map.Entry<?, ?> entry : map.entrySet()) {
checkType(keyType, entry.getKey());
checkType(valueType, entry.getValue());
}
}
private static <K> void checkType(Class<K> expectedType, Object obj) {
if (!expectedType.isInstance(obj)) {
throw new IllegalArgumentException("Expected " + expectedType + " but was " + obj.getClass() + ": " + obj);
}
}