Java: почему ArrayList с указанным универсальным типом не считается как приведение при вызове .readObject ()? - PullRequest
0 голосов
/ 31 августа 2011

Я загружаю ArrayList из файла сохранения, который имеет вывод общего типа, но eclpise говорит мне, что я не проверял приведение, почему (ArrayList< TypeOfObject >) не считается как приведение, когда (TypeOfObject) делает

    game.evilSprites = (ArrayList<EvilSprite>) OIS.readObject();

сотворение объекта как злогопринта работает ...

    game.evilSprite = (EvilSprite) OIS.readObject();

РЕДАКТИРОВАТЬ: отлично, спасибо, так что это по крайней мере действительный актерский состав, как я могу проверить это, чтобы удалить предупреждение?

1 Ответ

3 голосов
/ 31 августа 2011

Это считается как приведение, но это не может быть проверено должным образом. Во время выполнения объект не имеет информации о том, является ли он ArrayList<String>, ArrayList<Object> и т. Д. Из-за стирания типа. Таким образом, ваш актер проверяет, что это ArrayList из некоторого вида, но вы все равно можете получить ClassCastException, когда попытаетесь извлечь из него спрайт - значения могут не все быть EvilSprite ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...