如何在返回类型中使用通配符与定义的泛型类型不同?

问题描述 投票:4回答:1

我有以下课程,编译很好

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>

java generics
1个回答
2
投票

这是因为第二种情况

MyClass<Double> d = foo();

是有效的电话,但第一个不是。

© www.soinside.com 2019 - 2024. All rights reserved.