Java中是否可以部分地使用extends
约束来特化一个通用类?像这样:
class Base<U, V extends U>
{
}
class Partial<U extends Number>
extends Base<U, Integer> // The type Integer is not a valid substitute...
{
}
这是Java语言的限制还是我的误解?
答案 0 :(得分:2)
您收到此错误是因为Integer
需要扩展U
,但U
可能是Number
或Number
的任何子类,例如{{} 1}}和Double
当然不能扩展Integer
的任何子类。
编译的替代方案:
Number
答案 1 :(得分:1)
我认为这是合乎逻辑的:U
扩展Number
,您不能确定U
可以是Integer
的父级。它可以是Number
的任何其他孩子(Double,Float ......)。