Задать вопрос

Почему дженерик класса влияет на собственный дженерик метода?

Вопрос примером:
static class Foo<T> {
        <R> R get(R value) {
            return value;
        }
    }

    static {
        {
            // Так работает:
            Foo<?> foo = new Foo<>();
            Long a = foo.get(123L);
        }
        {
            // Так работает:
            Foo<String/*любой тип*/> foo = new Foo<>();
            Long a = foo.get(123L);
        }
        {
            // А почему так не работает?
            Foo foo = new Foo();
            Long a = foo.get(123L); // -- incompatible types Long и Object
        }
    }

Почему отсутствие дженерика класса при определении переменной не дает использовать метод, на который этот дженерик не влияет?
  • Вопрос задан
  • 577 просмотров
Подписаться 5 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Академия Eduson
    Java-разработчик
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Vestail
@Vestail
Software Engineer
Если вы используете сырую ссылку, вы теряете возможность использовать обобщения для любых нестатических челенов класса черех эту ссылку. JLS(4.8)
Combining Raw Types and Generic Methods
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы