Вот пошло-wrone кодMap.Entry и entrySet() общий тип идет неправильно
Set<Map.Entry> entrySet = new HashMap<Object,Object>().entrySet();
он приходит с ошибкой компиляции
cannot convert from Set<Map.Entry<Object,Object>> to Set<Map.Entry>
Но должен быть просто предупреждением от использования не общего типа в случае Map.Entry
от Map.Entry<Object,Object>
Но почему здесь возникает ошибка компиляции?
тогда я подозревал, что вся Set<Map.Entry>
может быть причиной, что это может быть Set<Map.Entry>
≠ set<Map.Entry<Object,Object>
, но так как Map.Entry
≈ Map.Entry<Object,Object>
почему не Set<Map.Entry>
≈ set<Map.Entry<Object,Object>
Я найти relavent вопросы, но мой вопрос в этом случае - это нечто иное.
Чтобы быть более пространным, почему, когда я использую Set<Map.Entry>
, я не могу получить событие для компиляции и получить сообщение об ошибке, но не просто предупреждение?
Но в другом случае, например ArrayList li = new ArrayList<String>();
я могу получить через компилировать и просто получить предупреждение «ArrayList является исходным типом. Ссылки на шаблонного типа ArrayList должны быть параметризированный»
Возможный дубликат [Что такое сырье типа и почему мы не должны использовать его?] (Http://stackoverflow.com/q/2770321/1553851) – shmosel
Смотрите также [Is Список подкласс списка ? Почему не генерические генераторы Java неявно полиморфны?] (Http://stackoverflow.com/q/2745265/1553851) –
shmosel
Спасибо, я нашел релевантные вопросы, но мой вопрос в этом случае - это нечто иное. Чтобы быть более пространным, почему, когда я использую Set, я не могу получить событие с помощью компиляции и получить сообщение об ошибке, но не просто предупреждение? Но в другом случае, напримерArrayList li = new ArrayList (); Я могу получить через компиляцию и просто получить предупреждение «ArrayList - это необработанный тип. Ссылки на общий тип ArrayList должны быть параметризированы» –
jacky