带参数化类的继承(Java)

时间:2019-12-30 23:29:55

标签: java generics inheritance

在设计BST时,我遇到了一个有趣的案例,在该案例中,我可以实例化没有类型参数的参数化类,并通过扩展初始泛型类将不同类型的任意对象传递给该类。例如,初始类是

public class BST<T, K extends Comparable> {
    ...
    protected class Node {

        ...
        private T value;
        private K key;
        ...
    }
}

并插入对象将在树中的某个位置创建一个新节点。该子类用于测试目的。

private final class BSTTestCase extends BST {
    ...
}

我发现我可以创建一个没有类型参数的BSTTestCase实例,甚至可以毫无问题地传递不同的对象。

public void testInsert() {
        BSTTestCase test = new BSTTestCase();
        test.put(Integer.valueOf(10), Integer.valueOf(1));
        System.out.println(test.get(Integer.valueOf(1))); // outputs 10
        test.put("test", "string");
        System.out.println(test.get("string")); // outputs test
}

我在Oracle文档中找到的有关与泛型类型的继承的大多数信息都不相关。据我了解,参数化类必须使用类型实例化,还是在这种情况下会发生某种默认设置?

0 个答案:

没有答案