2017-02-05 19 views
-4
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到以前实现的接口?java不能上传到接口

+2

从'KeyItr'中删除'',它隐藏了封闭类的'k'。 –

回答

0

你发布的这段代码甚至没有编译。 您使用的泛型不正确:应将EntryItr类声明为EntryItr<K, V>。此外,KeyItritr字段有一个无法识别的V类型的通用值。您应该将其更改为Object,或将其添加到KeyItr的一般签名,即KeyItr

这些更改后,分配itr = new EntryItr<>();应该是可能的。

请注意这里的钻石经营者表示EntryItr将具有与KeyItritr相同的仿制品签名。