在java中使用泛型组合元素的正确方法
树包含TreeNode的元素和T类型的数据元素 我的定义如下在java中使用泛型组合元素的正确方法,java,generics,Java,Generics,树包含TreeNode的元素和T类型的数据元素 我的定义如下 class TreeNode<T> { T data; } 类树节点 { T数据; } 下面的话毫无意义 class Tree<TreeNode<T>> { TreeNode<T> node; } 类树 { 树节点; } 然后案例1 类树 { 树节点; } 但上面给出了第3行T处的误差 然后案例2 类树 { 树节点; } 编译器在第1-T行的T处投诉无法解决 但
class TreeNode<T>
{
T data;
}
类树节点
{
T数据;
}
下面的话毫无意义
class Tree<TreeNode<T>>
{
TreeNode<T> node;
}
类树
{
树节点;
}
然后案例1
类树
{
树节点;
}
但上面给出了第3行T处的误差
然后案例2
类树
{
树节点;
}
编译器在第1-T行的T处投诉无法解决
但是下面的案例3编译器很高兴
class Tree<T extends TreeNode<T>>
{
TreeNode<T> node;
}
类树
{
树节点;
}
但是上面的说法没有道理。在类似T的情况下是正确的,但这里它表示Tree包含类型为子类型TreeNode的元素,其中包含类型为T的数据,inturn是类型为T的,这表示TreeNode也包含类型为TreeNode的元素,这不是我的意图
定义树包含数据元素T的TreeNode类型的元素的正确方法是什么?
树包含子类型TreeNode的元素
有没有办法告诉编译器T是在TreeNode类中声明的
另外,如何参数化TreeNode和Tree,即TreeNode包含T类型的元素,并且还具有TreeNode左子级和右子级的指针?类Tree{TreeNode;}有什么问题?是的,这将解决问题,我一直认为Tree包含TreeNode类型的元素。
class Tree<N extends TreeNode<T>>
{
TreeNode<T> node;
}
class Tree<T extends TreeNode<T>>
{
TreeNode<T> node;
}