Чем использование подстановочного знака в типе возврата отличается от определенного универсального типа? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть следующий класс, который прекрасно компилируется

class MyClass<T> {
    MyClass<? extends Number> foo() {
        return new MyClass<Integer>();
    }
}

, но когда я изменяю свой тип возврата на этот

class MyClass<T> {
    <R extends Number> MyClass<R> foo() {
        return new MyClass<Integer>();
    }
}

, я получаю сообщение об ошибке в своем операторе возврата, говоря

incompatible types: MyClass<java.lang.Integer> cannot be converted to MyClass<R>

1 Ответ

0 голосов
/ 29 ноября 2018

потому что для второго случая

MyClass<Double> d = foo();

является допустимым вызовом, а для первого - нет.

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