Я нашел что-то странное в приведениях в Java, я никогда раньше этого не видел.
Приведение фактически не выполняется там, где вы его запрограммировали в общем методе.
Проверка странной вещи.
На хэш-карте:
HashMap<String,Object> map = ...
map.put("hello", "World");
System.err.println((Integer)map.get("hello")); // -----> ClassCastException
На карте Wrapper
MapWrap wrap = ...
wrap.put("hello", "World");
System.err.println(wrap.get("hello",Integer.class)); // -----> don't cast, print World (i guess because println receives an Object reference but the cast should be done before that).
System.err.println(wrap.get("hello", Integer.class).toString()); // -----> print World + ClassCastException
Код методов:
private <T> T get(String key, Class<T> c){
return (T)map.get(key);
}
private Object get(String key){
return map.get(key);
}
Кто-нибудь знает, есть ли у этого механизма имя или знает что-нибудь об этом?
Спасибо