为什么这段代码会出现不兼容的类型错误?
public class Sample<T extends Number> {
T doSomething() {
return new Integer(0);
}
}
答案 0 :(得分:3)
它给编译器错误,因为对于编译器,T
可能是任何扩展String
的内容,因此String
不会匹配T
,除非{{ 1}}确实是T
,它无法承担。为此,编译器忽略了String
是String
类的事实。
在这种情况下,使用泛型类型参数final
是没用的。这更清楚,它将编译。
T