我有下面的类,它编译了精细的
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>
这是因为对于第二种情况
MyClass<Double> d = foo();
是有效的调用,但第一个调用不是。