3

次の宣言を持つ一般的な二分探索木クラスが与えられました。

public class BST<K extends Comparable<K>, V>

値がキーになり、キーが値になるように BST を逆にするメソッドを作成するように依頼されました。次のメソッドを呼び出すと(指定されたクラスで定義されています)

reverseDict.put(originalDict.get(key), key); 

Netbeans から次の 2 つのエラー メッセージが表示されます。

スレッド「メイン」の例外 java.lang.RuntimeException: コンパイルできないソース コード - エラーのある sym タイプ: BST.put

また:

メソッドに適したメソッドが見つかりませんput(V,K)メソッドBST.put(BST<K,V>.Node,K,V)は適用できません (実引数リストと仮引数リストの長さが異なります) メソッドBST.put(K,V)は適用できません (メソッド呼び出し変換によって実引数Vを変換することはできません) ここで、は型変数です:KVK

V extends Objectメソッドで宣言<K,V>reverseBST(BST<K,V>)

K extends Comparable<K>メソッドで宣言<K,V>reverseBST(BST<K,V>)

エラーメッセージが教えてくれることから、値が拡張Comparableされないため、それらをキーとして使用できません。私が正しければ、指定されたクラス (おそらくキャスト) を変更せずにどうすればそれを回避できますか?

4

2 に答える 2