Почему не выдает СlassСastException и в типизированную коллекцию можно положить значение любого типа?

Рейтинг: 2Ответов: 0Опубликовано: 11.04.2023

Прошу помочь разобраться в странном поведении кода на Java8 (в последующих версиях ClassCastException формируется):

public class CheckSomeThings {

   public static Map<Object, Object> map = new HashMap<>();

   public static void main(String[] args) throws NoSuchFieldException {
       map.put("Date", new Date());
       map.put("Integer", Integer.valueOf(5));

       List<String> list = new ArrayList<>();
       list.add(getMapValue("Date"));
       list.add(getMapValue("Integer"));

       Map<String, String> maps = new HashMap<>();
       maps.put("value1", getMapValue("Date"));
       maps.put("value2", getMapValue("Integer"));

       System.out.println(list);
       System.out.println(maps);
   }

   public static <T> T getMapValue(Object key) {
       return (T) map.get(key);
   }
}

Фактически с помощью такой конструкции в типизированную коллекцию можно положить значение любого типа:

в типизированную коллекцию можно положить значение любого типа

Ответы

Ответов пока нет.