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;
    }
..........
}

  

posted @ 2017-02-22 13:09  mslog  阅读(295)  评论(0编辑  收藏  举报