Как преобразовать нетипизированный объект в HashMap

#java #hashmap

#java #hashmap

Вопрос:

У меня есть Hashmap <Строка, объект>, который может содержать другой тип объекта, например String, Int . Итак, я уже успешно преобразовал объект в int и string . Но когда я пытаюсь преобразовать его в hashmap, это не работает, и у меня есть пустое значение без ошибок.

Вот что я попробовал :

 String str = "hey";
Int intVal= 66;
HashMap<String, String> myGetHashMapVal= new HashMap<>();

HashMap<String,Obj> objHashMap = new HashMap<>();

objHashMap.put("TheString",str);
objHashMap.put("TheInt",intVal);
objHashMap.put("HashMap",myGetHashMapVal);


HashMap<String, Object> hashMap = (HashMap<String, Object>) objHashMap.get("HashMap");
  

Комментарии:

1. Как вы определяете, что у вас есть пустое значение без ошибок? У вас должно быть допустимое значение, но его печать приведет к бесконечному циклу.

2. Интересно. Помещаем экземпляр хэш-карты в себя. Это никогда бы не пришло мне в голову. Однако не уверен в необходимости.

3. @LouisWasserman возможно, я использую свой отладчик, и в моем отладчике объект отображается как HashMap

4. @WJS Мне это нужно для некоторой рекурсивной обработки, когда я вспоминаю функцию, использующую hashmap.

5. Не HashMap<String,Obj> objHashMap = new HashMap<>() должно быть HashMap<String,Object> ...

Ответ №1:

Ну, для меня это работает просто отлично.

 HashMap<String,Object> map = new HashMap<>();
map.put("myMap", map);
map.put("int", 1);
@SuppressWarnings("unchecked")
HashMap<String,Object> map2 = (HashMap<String,Object>)map.get("myMap");
System.out.println(map2.get("int"));
  

С принтами

 1