泛型的类型参数可以有多个边界
<T extends B1 & B2 & B3>
当其中一个边界是class的时候需要写在前面。
class A { /* ... */
}
interface B { /* ... */
}
interface C { /* ... */
}
public class D<T extends A & B & C> { /* ... */
}
写在后面的话会有编译错误
class D <T extends B & A & C> { /* ... */ } // compile-time error