Java 无法向上转换为接口


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> 。此外,KeyItritr 字段具有无法识别的泛型值,类型为 V 。你应该把它改成Object,或者把它添加到KeyItr的通用签名中,即KeyItr

在这些更改之后,应该可以进行分配itr = new EntryItr<>();

请注意此处的钻石运营商表示EntryItr将具有与KeyItr itr相同的仿制药签名。

相关内容

  • 没有找到相关文章

最新更新