java无法向上转换到接口 私有类EntryItr实现迭代器{ ... } 私有类KeyItr实现迭代器{ 专用迭代器itr; KeyItr(){ itr=new EntryItr();//无法创建 }
为什么不能向上转换EntryItr到以前实现的接口?您发布的这段代码甚至没有编译。 您使用的泛型不正确:java无法向上转换到接口 私有类EntryItr实现迭代器{ ... } 私有类KeyItr实现迭代器{ 专用迭代器itr; KeyItr(){ itr=new EntryItr();//无法创建 },java,interface,casting,upcasting,Java,Interface,Casting,Upcasting,为什么不能向上转换EntryItr到以前实现的接口?您发布的这段代码甚至没有编译。 您使用的泛型不正确:EntryItr类应声明为EntryItr。此外,KeyItr的itr字段具有类型为V的无法识别的泛型值。您应该将其更改为对象,或者将其添加到KeyItr的泛型签名,即KeyItr 在这些更改之后,应该可以进行赋值itr=new EntryItr(); 请注意,这里的菱形运算符表示EntryItr将具有与KeyItr的itr相同的泛型签名,从KeyItr中删除,它隐藏了封闭类的k。 priva
EntryItr
类应声明为EntryItr
。此外,KeyItr
的itr
字段具有类型为V
的无法识别的泛型值。您应该将其更改为对象
,或者将其添加到KeyItr
的泛型签名,即KeyItr
在这些更改之后,应该可以进行赋值itr=new EntryItr();
请注意,这里的菱形运算符表示EntryItr
将具有与KeyItr
的itr
相同的泛型签名,从KeyItr
中删除
,它隐藏了封闭类的k
。
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
}