¿De qué manera el uso de comodín en el tipo de retorno difiere de tipo genérico definido?

Carmine:

Tengo la clase siguiente, que compila bien

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

pero cuando cambio mi tipo de retorno a esta

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

Comienzo a conseguir el error en mi estado de retorno, diciendo

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

TAlex:

es porque en el segundo caso

MyClass<Double> d = foo();

es llamada válida, pero por primera vez no lo es.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=191134&siteId=1
Recomendado
Clasificación