1

ジェネリック型の二分探索木を実装したい。宣言は次のとおりです。

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<Entry> bstと、常に次のようなコンパイルエラーが発生します。

「境界の不一致:タイプEntryは、タイプBinarySearchTreeの境界パラメータの有効な代替ではありません」

私はまだJavaのジェネリック型にまったく慣れていません。誰かが私が問題を解決するのを手伝ってくれる?ありがとう

4

2 に答える 2

6

rawが一致しないため、クラスはrawの代わりにEntry実装する必要があります。Comparable<Entry>ComparableComparableComparable<T>

public class Entry implements Comparable<Entry> { ... }
于 2012-06-05T13:47:51.357 に答える
5

Comparable<Entry>BinaryTreeのコントラクトに準拠するように、Entryクラスを実装します。

コントラクトには、「タイプComparable <T>を拡張(または実装)するすべてのタイプT」と記載されています。「T」を「Entry」に置き換えると、これが必要であることがわかります。Entry extends Comparable<Entry>

于 2012-06-05T13:48:12.620 に答える