(При исследовании этого, все, что я нашел так сообщения и веб-сайты говорят, что вы не можете просто бросить к универсальному типу в зависимости от типа стирания, я ничего не нашел на пункте.)типа при литье для общего типа
Может кто-нибудь объяснить мне, почему Eclipse подсказывает мне это предупреждение?
public <T> T getFromBag(String key, Class<T> clazz) {
Object val = null;
T typeCastValue = null;
if (commonDataBag.containsKey(key)) {
val = commonDataBag.get(key);
typeCastValue = clazz.cast(val);
}
return typeCastValue;
}
Использование:
Map<String, Foo> stuff= myService().<Map>getFromBag(key, Map.class);
Предупреждение:
Type safety: The expression of type Map needs unchecked conversion to conform to Map<String,Foo>
Да, это в основном неизбежно. Вы можете вызвать 'getFromBag (key, Map.class)', но вы не можете использовать generics для обеспечения того, что результатом будет «Карта» вместо другого типа «Карта». –
'Map.class' не говорит, что это за« Карта », и нет такой вещи, как« Карта .class'. –