Я работаю над веб-приложением на базе Java и внезапно обнаружил поведение, которое я не могу понять на данный момент.Java/Eclipse: возврат в список casted Map.values ()
Скажем, у меня следующий код:
...snip...
Map<Integer, Foo> map = new HashMap<Integer, Foo>();
...snip...
public List<Foo> getFoos() {
return (List<Foo>)map.values();
}
Я знаю, что вам нужно создавать новый список, как новый ArrayList(), например, но мне интересно, почему затмение не дает мне предупреждение.
Только при запуске кода I (будет) получить ClassCastException. Я совершенно уверен, что это не ошибка eclipse, так как у компилятора также нет проблем с этим кодом, но кто-нибудь может объяснить мне, почему вы всегда получаете ошибку при запуске этого кода, но IDE и компилятор не жалуются?
Компилятор не жалуется, потому что ClassCastException является неконтролируемым исключением. он не проверяется во время компиляции – cjcroix
Анализ IntelliJ's -> Inspect Code даст вам предупреждение по этому коду, но по причинам, указанным ниже, это действует до времени выполнения. –