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