【问题标题】:generic type binary search tree in javajava中的泛型二叉搜索树
【发布时间】:2012-06-06 10:05:32
【问题描述】:

我想实现一个通用类型的二叉搜索树。声明如下:

public BTNode<T> {}

public class BinaryTree<T extends Comparable<T>> {}

public class BinarySearchTree <T extends Comparable<T>> extends BinaryTree<T> {}

现在我编写了一个名为 Entry 的类,并希望将此类的实例存储在 BinarySearchTree 中。

public class Entry implements Comparable{
private String firstName, lastName, address, phoneNumber;

public Entry(String fName, String lName, String address, String phoneNum) {
    this.firstName = fName;
    this.lastName = lName;
    this.address = address;
    this.phoneNumber = phoneNum;
}

public int compareTo(Object arg0) {
    // TODO Auto-generated method stub
    return 0;
}
}

但是当我声明BinarySearchTree&lt;Entry&gt; bst时,总是有一个编译错误说:

"绑定不匹配:类型 Entry 不是 有界参数 > 类型 二叉搜索树"

我对 Java 中的泛型类型还是很陌生。有人可以帮我解决问题吗?谢谢

【问题讨论】:

  • &lt;T extends Comparable&lt;T&gt;&gt;你界面中的这一行应该是&lt;T implements Comparable&lt;T&gt;&gt;
  • 不,> 是正确的!
  • @HunterMcMillen 不,不应该:extends 用于泛型,无论类或接口如何。如果你想说extends Foo implements Bar,那么你使用&lt;T extends Foo &amp; Bar&gt;
  • 为了获得最佳效果,请使用&lt;T extends Comparable&lt;? super T&gt;&gt;

标签: java generics binary-search-tree


【解决方案1】:

您的Entry 类需要实现Comparable&lt;Entry&gt; 而不是原始Comparable,因为原始ComparableComparable&lt;T&gt; 不匹配。

public class Entry implements Comparable<Entry> { ... }

【讨论】:

  • 有道理!非常感谢=D
【解决方案2】:

让你的Entry类实现Comparable&lt;Entry&gt;,使其符合BinaryTree的约定。

合同规定“扩展(或实现)类型 Comparable”的所有类型 T”。将“T”替换为“Entry”,您会发现这是必需的:Entry extends Comparable&lt;Entry&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多