我指的是这个java docs。 如果其中一个边界是一个类,则必须首先指定它。我觉得它应该允许以任何顺序。
为什么java有这样的限制?这背后有什么具体原因吗?
多重界限
前面的示例说明了使用具有单个边界的类型参数,但类型参数可以具有多个边界:
具有多个边界的类型变量是边界中列出的所有类型的子类型。如果其中一个边界是一个类,则必须首先指定它。例如:
Class A { /* ... */ }
interface B { /* ... */ }
interface C { /* ...
*/ }
class D <T extends A & B & C> { /* ... */ }
如果未首先指定 bound A,则会出现编译时错误:
class D <T extends B & A & C> { /* ... */ } // compile-time error ,but why ?