Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
泛型二进制搜索树Java类型参数不在范围内_Java_Generics_Search - Fatal编程技术网

泛型二进制搜索树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$