2017-02-05 17 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相同的仿製品簽名。