如果我有一个节点类可以接受它的键值的泛型类型:
class Node<K extends Comparable<K>> implements Comparable<Node<K> {
...
}
class KeyValueNode<K extends Comparable<K>, V> extends Node<K> {
...
}是否可以声明一个接受泛型类型节点的泛型二叉树类,它可以包含泛型键值?我想它应该是这样的……
class BinaryTree<N<K>> {
N<K> root;
BinaryTree<N<K>> left, right;
...
}对于任何明显的误解,我很抱歉,我仍在努力掌握Java中泛型和语法的诀窍,如果有任何帮助或见解,我将非常感激。
谢谢!
发布于 2012-04-23 10:38:56
二叉树结构本质上只包含对根节点的引用。因此,它应该具有与其节点相同的类型参数:
class BinaryTree<K extends Comparable<K>> {
Node<K> root;
}或者对于键值设计:
class KeyValueBinaryTree<K extends Comparable<K>, V> {
KeyValueNode<K, V> root;
}请注意,封闭的树类是否是必要的还存在争议,因为它是相互指向的节点。
发布于 2012-04-22 15:08:02
你可以说:
class BinaryTree<N extends Node<N>> {
Node<N> root;
// or even better: N root;
BinaryTree<N> left, right;
}与the purpose of defining a generic type不同,使用BinaryTree<Node<K>>不是对类进行参数化。
发布于 2012-04-22 15:14:49
这就是我编写泛型二进制树类的方式
public class BinaryTree<N extends Node<K>, K extends Comparable> {
N root;
BinaryTree<N, K> left, right;
}(尽管我假设您不会真的在二叉树中讲述BinaryTree,这只是为了说明如何声明它)
https://stackoverflow.com/questions/10265836
复制相似问题