我创建了一个具有泛型函数entries()
的地图界面。
// return iterable collection of all the key-value entries in the map
public ArrayList<Pair<KeyType, ValueType>> entries();
问题是,当我尝试实现接口时,我在entries()
函数的接口文件中收到此错误:Bound mismatch: The type KeyType is not a valid substitute for the bounded parameter <KeyType extends Comparable<KeyType>> of the type Pair<KeyType,ValueType>
我对该功能的实现如下所示:
public ArrayList<Pair<KeyType, ValueType>> entries(){
ArrayList<Pair<KeyType, ValueType>> list = new ArrayList<Pair<KeyType, ValueType>>();
preorderList (root, list);
return list;
}
我该如何解决这个问题?
答案 0 :(得分:0)
您可能在接口声明中留下了通用绑定。由于您的Pair
要求密钥可以相互比较(KeyType extends Comparable<KeyType>
),因此您的Map
需要在其KeyType
声明中重申此约束才能使用{{1} {}为Pair
。如果KeyType
限制它,您可能还需要绑定ValueType
。
Pair
在通用类型擦除下,interface Map <KeyType extends Comparable<KeyType>, ValueType> { ... }
&#39; s Pair
将替换为KeyType
。如果您未绑定Comparable
&#39; Map
,则会将其替换为KeyType
,如果没有可能失败的缩小投射,则Object
无法将其分配给Comparable
。