Tree包含TreeNode的元素,数据元素类型为T。
我定义如下
class TreeNode<T>
{
T data;
}
以下是有道理的。
class Tree<TreeNode<T>>
{
TreeNode<T> node;
}
然后 案例1
class Tree
{
TreeNode<T> node;
}
但是上面在第3行的T处给出了错误。
然后 案例2
class Tree<N extends TreeNode<T>>
{
TreeNode<T> node;
}
编译器在第1行的T处抱怨 - T无法解析。
但在 案例3 编译器下面很高兴
class Tree<T extends TreeNode<T>>
{
TreeNode<T> node;
}
但上述选择是有意义的。它会像T扩展Comparable一样真实,但在这里它说Tree包含类型为子类型TreeNode的元素,包含类型为T的数据,其中int为T类型,它表示TreeNode也包含TreeNode类型的元素,不是我的意图。
定义Tree包含数据元素T的TreeNode类型元素的正确方法是什么? 和Tree包含子类型TreeNode的元素?
有没有办法告诉编译器在TreeNode类中声明了T?
如何对TreeNode和Tree进行参数化,说TreeNode包含T类型的元素,还有TreeNode左子和右子的指针?