次の宣言を持つ一般的な二分探索木クラスが与えられました。
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
を変換することはできません) ここで、は型変数です:K
V
K
V extends Object
メソッドで宣言<K,V>reverseBST(BST<K,V>)
K extends Comparable<K>
メソッドで宣言<K,V>reverseBST(BST<K,V>)
エラーメッセージが教えてくれることから、値が拡張Comparable
されないため、それらをキーとして使用できません。私が正しければ、指定されたクラス (おそらくキャスト) を変更せずにどうすればそれを回避できますか?