1. 泛型类
public class Pair<T> { // 也可以定义为Pair<String>
private T first;
private T second;
}
2. 泛型方法
class ArrayAlg {
public static <T> T getMiddle(T[] a) {
return a[a.length / 2];
}
}
调用泛型方法
String[] names = {"John", "Q", "Public"};
String middle = ArrayAlg.<String>getMiddle(names); //或者省略<String>
3. 泛型变量
class ArrayAlg {
public static <T extends Comparable> Pair<T> mixmax(T[] a) { //注意,T可以是任何对象,那么就不能保证T有compareTo的方法,所以必须继承Comparable接口,来确保有compareTo方法
T smallset = a[0];
}
}
4. 可以把返回的泛型类型,强制转换成某一种特殊类型
5. 泛型约束
5.1 基本类型,只有Pair<Double>,而没有Pair<double>
5.2 不能抛出和捕获泛型类的异常
5.3 不能声明参数化类型的数组,如:Pair<String>[] table = new Pair<String>(10);
5.4 不能实例化泛型类