Java部分泛型专业化和扩展

时间:2015-10-21 16:11:17

标签: java generics

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语言的限制还是我的误解?

2 个答案:

答案 0 :(得分:2)

您收到此错误是因为Integer需要扩展U,但U可能是NumberNumber的任何子类,例如{{} 1}}和Double当然不能扩展Integer的任何子类。

编译的替代方案:

Number

答案 1 :(得分:1)

我认为这是合乎逻辑的:U扩展Number,您不能确定U可以是Integer的父级。它可以是Number的任何其他孩子(Double,Float ......)。