Вопрос по параметризированным generics в Java
Потому что тип возвращаемого значения уже будет Location.
От classCastException тебе не избавиться в любом случае, смысл генериков - избавиться от граничных кастов туда-обратно.
Ну и плюс механизм отслеживания корректности кастов (типа строгой типизации)
> 2) Зачем вообще нужно такое объявление метода getParcelable? Есть какие-то ситуации, где его можно будет подставить, а вот такой нельзя
Как раз для этого и нужно. Чтоб не писать касты руками.
потому что type inference
http://java.sun.com/docs/books/jls/third_edition/html/expres...
> Ведь метод может вернуть любую реализацию интерфейса Parcelable, и будет класскаст исключение в рантайме, а ведь одной из причин добавления дженириков как раз и было желание избавиться от таких исключений.
Так как у тебя метод возвращает T, то реализация метода должна быть такая, что возвращает T. Иначе компилятор будет ругаться unchecked-cast ворнингами на реализацию метода.
> Зачем вообще нужно такое объявление метода getParcelable?
Скорее всего, автору было лень каждый раз кастить результат метода к конкретному типу имея unchecked cast, и он типа обошелся вот так, засунув один unchecked cast в тело метода. Что есть, конечно, не тру.
>Есть какие-то ситуации, где его можно будет подставить, а вот такой нельзя?
Фактически пример к моим словам выше
Location l = getParcelable;
Оставить комментарий
ifani
Есть класс:Есть метод (в каком-то стороннем классе)
Есть переменная
А теперь такой вызов
Вопросы:
1) Почему от меня не требуется явно указать тип возвращаемого значения
Ведь метод может вернуть любую реализацию интерфейса Parcelable, и будет класскаст исключение в рантайме, а ведь одной из причин добавления дженириков как раз и было желание избавиться от таких исключений.
2) Зачем вообще нужно такое объявление метода getParcelable? Есть какие-то ситуации, где его можно будет подставить, а вот такой нельзя?