java中范型的限定
泛型的一般格式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 BST private class Node { private Key key; // sorted by key private Value val; // associated data private Node left, right; // left and right subtrees private int N; // number of nodes in subtree public 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; } .......... }