为什么需要限定类型变量
public class ArrayAlg{
public static <T> min(T[] a){
if(a == null || a.length ==0){
return null;
}
T smallest = a[0];
for (int i=1;i<a.length;i++){
if(smallest.compareTo(a[i]>0)){
smallest = a[i];
return smallest;
}
}
}
}
在这例子中我们怎么确保T所属的类有compareTo()这个方法?
解决问题的方法就是 把T限制为实现了Comparable接口的实现类
public static <T extends Comparable> min(T[] a){
...
}
泛型变量限定的表达式
<T extends BoundingType>
- T表示绑定类型的子类型(subtype)
- BoundingType 可以类型也可以是接口
- 一个类型变量或通配符可以有多个限定
T extends Cmparable & Serializable
- 限定变量类型用”&”分隔,都号用来分隔类型变量
- 在限定中至多一个为类,并且是限定列表中第一个