泛型的一般格式Test<T>,使用起来很方便,相当于Object,而且和C/C++中的模板差不多。
但是Java的泛型还有一个好处,在于可以限定T的类型,格式如下:
Test<T extends Base>,这样就要求Test的类型必须继承了Base。
注意这里的extends只是一个关键字,不同于表示继承的extends,Base可以是Class,也可以是Interface。
它就有限定上、下限的功能:
泛型的限定上限: <T extends E> 接受 E 或者 E 的子类型。
泛型的限定下限: <T super E> 接收 E 或者 E 的父类。
例如:
public class BST<Key extends Comparable<Key>, Value> {//key必须是实现了Comparable的类型private Node root; // root of BSTprivate class Node {private Key key; // sorted by keyprivate Value val; // associated dataprivate Node left, right; // left and right subtreesprivate int N; // number of nodes in subtreepublic Node(Key key, Value val, int N) {this.key = key;this.val = val;this.N = N;}}// is the symbol table empty?public boolean isEmpty() {return size() == 0;}
..........
}