private class EntryItr implements Iterator<Map.Entry<K, V>> {
...
}
private class KeyItr<K> implements Iterator<K> {
private Iterator<Map.Entry<K,V>> itr;
KeyItr(){
itr=new EntryItr(); // CANNOT CREATE
}
为什么不能将 EntryItr 向上转换为先前实现的接口?
你发布的这段代码甚至没有编译。您使用的泛型不正确:EntryItr
类应声明为 EntryItr<K, V>
。此外,KeyItr
的 itr
字段具有无法识别的泛型值,类型为 V
。你应该把它改成Object
,或者把它添加到KeyItr
的通用签名中,即KeyItr
在这些更改之后,应该可以进行分配itr = new EntryItr<>();
。
请注意此处的钻石运营商表示EntryItr
将具有与KeyItr
itr
相同的仿制药签名。