使用超类作为通用子类型中的类型参数

时间:2014-03-24 21:12:06

标签: java generics

为什么这段代码会出现不兼容的类型错误?

public class Sample<T extends Number> {
    T doSomething() {
        return new Integer(0);
    }
}

1 个答案:

答案 0 :(得分:3)

它给编译器错误,因为对于编译器,T可能是任何扩展String的内容,因此String不会匹配T,除非{{ 1}}确实是T,它无法承担。为此,编译器忽略了StringString类的事实。

在这种情况下,使用泛型类型参数final是没用的。这更清楚,它将编译。

T