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

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

Вопрос примером:
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
        }
    }

Почему отсутствие дженерика класса при определении переменной не дает использовать метод, на который этот дженерик не влияет?
  • Вопрос задан
  • 575 просмотров
Подписаться 5 2 комментария
Подписчики вопроса 5 К ответам на вопрос (2)