使用泛型Compariable在Java中实现二叉树<;T>;数据?

使用泛型Compariable在Java中实现二叉树<;T>;数据?,java,generics,binary-tree,comparable,Java,Generics,Binary Tree,Comparable,Q:在我下面的二叉树实现中,为什么编译器会在 if(data.compareTo(this.data)如果某个东西可比,那么它与T可比,而与可比不可比。这就是第二个代码段工作的原因。查看:compareTo(T)由Comparable接口提供。此方法允许将实现此接口的T类的对象实例与另一个T实例进行比较。在第一个示例中,您将Comparable与Comparable进行比较(而不是与T进行比较) 这应该起作用: public class MyBinaryTreeNodeG<T> {

Q:在我下面的二叉树实现中,为什么编译器会在


if(data.compareTo(this.data)如果某个东西
可比
,那么它与
T
可比,而与
可比
不可比。这就是第二个代码段工作的原因。

查看:
compareTo(T)
Comparable
接口提供。此方法允许将实现此接口的
T
类的对象实例与另一个
T
实例进行比较。在第一个示例中,您将
Comparable
Comparable
进行比较(而不是与
T
进行比较)

这应该起作用:

public class MyBinaryTreeNodeG<T> {

    Comparable<T> data;

    // ...

    public MyBinaryTreeNodeG<T> addChild(final T data) {
        if (this.data.compareTo(data) <= 0) {
        } else {
        }
        // ...
    }
}
公共类MyBinaryTreeNodeG{
可比数据;
// ...
公共MyBinaryTreeNodeG addChild(最终T数据){
if(this.data.compareTo)(数据)
public class MyBinaryTreeNodeG<T extends Comparable<T>>{
  T data;
  MyBinaryTreeNodeG<T> parent;
  MyBinaryTreeNodeG<T> left;
  MyBinaryTreeNodeG<T> right;

  public MyBinaryTreeNodeG(T data){
   this.data = data; 
  }

  public MyBinaryTreeNodeG<T> addChild(T data){
    if (data.compareTo(this.data) <= 0) {
      //left node stuff
    } else { 
     //right node stuff
    return null;
  }
public class MyBinaryTreeNodeG<T> {

    Comparable<T> data;

    // ...

    public MyBinaryTreeNodeG<T> addChild(final T data) {
        if (this.data.compareTo(data) <= 0) {
        } else {
        }
        // ...
    }
}