泛型二进制搜索树Java类型参数不在范围内
我做了下面的二进制搜索树,但它不工作。。。需要帮助吗泛型二进制搜索树Java类型参数不在范围内,java,generics,search,Java,Generics,Search,我做了下面的二进制搜索树,但它不工作。。。需要帮助吗 class Tree<ContentType extends Comparable<ContentType>>{ Node node; public Tree(){ node = null; } public Tree(ContentType pContent){ node = new Node<ContentType>(pContent); } public T
class Tree<ContentType extends Comparable<ContentType>>{
Node node;
public Tree(){
node = null;
}
public Tree(ContentType pContent){
node = new Node<ContentType>(pContent);
}
public Tree(ContentType pContent, Tree pLeftTree, Tree pRightTree){
node = new Node(pContent);
node.setLeftTree(pLeftTree);
node.setRightTree(pRightTree);
}
public boolean isEmpty(){
...
}
public void insert(ContentType pContent){
...
}
public ContentType search(ContentType pContent){
...
}
public void delete(ContentType pContent){
...
}
public ContentType getContent(){
...
}
...
private class Node<ContentType>{
Tree left = null;
Tree right = null;
ContentType content = null;
public Node(ContentType pContent){
content=pContent;
left = new Tree();
right = new Tree();
}
...
}
}
感谢所有帮助这是完全固定的类文件-请确保在声明类型的所有实例时指定泛型类型
class Tree<ContentType extends Comparable<ContentType>>{
// here
Node<ContentType> node;
public Tree(){
node = null;
}
public Tree(ContentType pContent){
node = new Node<ContentType>(pContent);
}
// each time Tree is used, it should be typed!
public Tree(ContentType pContent, Tree<ContentType> pLeftTree, Tree<ContentType> pRightTree){
// same with Node!
node = new Node<ContentType>(pContent);
node.setLeftTree(pLeftTree);
node.setRightTree(pRightTree);
}
//Node needs to be typed with the exact same type as Tree!
private class Node<ContentType extends Comparable<ContentType>>{
// Typed Tree!
Tree<ContentType> left = null;
Tree<ContentType> right = null;
ContentType content = null;
public Node(ContentType pContent){
content=pContent;
left = new Tree<ContentType>();
right = new Tree<ContentType>();
}
public void setLeftTree(Tree<ContentType> tree) {
left = tree;
}
public void setRightTree(Tree<ContentType> tree) {
right = tree;
}
}
}
这是完全固定的类文件-请确保在声明类型的所有实例时指定泛型类型
class Tree<ContentType extends Comparable<ContentType>>{
// here
Node<ContentType> node;
public Tree(){
node = null;
}
public Tree(ContentType pContent){
node = new Node<ContentType>(pContent);
}
// each time Tree is used, it should be typed!
public Tree(ContentType pContent, Tree<ContentType> pLeftTree, Tree<ContentType> pRightTree){
// same with Node!
node = new Node<ContentType>(pContent);
node.setLeftTree(pLeftTree);
node.setRightTree(pRightTree);
}
//Node needs to be typed with the exact same type as Tree!
private class Node<ContentType extends Comparable<ContentType>>{
// Typed Tree!
Tree<ContentType> left = null;
Tree<ContentType> right = null;
ContentType content = null;
public Node(ContentType pContent){
content=pContent;
left = new Tree<ContentType>();
right = new Tree<ContentType>();
}
public void setLeftTree(Tree<ContentType> tree) {
left = tree;
}
public void setRightTree(Tree<ContentType> tree) {
right = tree;
}
}
}
异常何时何地出现?当我想编译程序时,它会在控制台
公共树(ContentType pContent,Tree pLeftTree,Tree pRightTree)
应该是公共树(ContentType pContent,Tree pLeftTree,Tree pRightTree)
。您没有收到关于使用原始类型的任何警告吗?-除此之外,我建议对泛型使用更独特的名称,因为ContentType
可能会被误认为类名它对我起了作用…getLeftTreeWhere和when方法中出现了问题异常?当我想编译程序时,它会在控制台公共树(ContentType pContent,Tree-pLeftTree,Tree-pRightTree)
应该是公共树(ContentType pContent,Tree-pLeftTree,Tree-pRightTree)
。您没有收到关于使用原始类型的任何警告吗?-除此之外,我建议对泛型使用更独特的名称,因为ContentType
可能会被误认为是类名。我运行上面的代码(只运行给定的代码),它对我有效……问题出现在方法getLeftTree中
~ bfung$ javac -version
javac 1.8.0_40
~ bfung$ javac Tree.java
~ bfung$