8.4 泛型变量的限定
- 有时,类或方法需要对类型变量加以约束.
/**
* 计算数组中的最小元素
**/
class ArrayAlg{
//将T限制为实现了Comparable接口的类,以确信T所属的类域compareTo方法
//使用extends而非implements表示T是绑定类型的子类型(subtype)
//T和绑定类型可以始类,也可以是接口,选择extends的原因是更接近子类的概念
public static <T extends Comparable> 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 extends Comparable && Serializable
- 在Java的继承中,可以根据需要拥有多个接口父类型,但限定中最多有一个类.如果用一个类作为限定,它必须是限定列表中第一个