2017-02-05 4 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 
    } 

にアップキャストすることはできませんか?Javaはインタフェース

+2

'KeyItr'から' 'を取り除くと、それは囲むクラスの' k'を隠します。 –

答えて

0

あなたが投稿したこのコードは、コンパイルされていません。 使用したジェネリックは適切ではありません。EntryItrクラスはEntryItr<K, V>と宣言してください。また、KeyItritrフィールドには、タイプVの認識できない総称値があります。 Objectに変更するか、KeyItrの一般的な署名(KeyItr)に追加するか(

)これらの変更後、itr = new EntryItr<>();の割り当てが可能である必要があります。

EntryItrKeyItritrと同じジェネリックスシグネチャを持つことを示すためにダイヤモンド演算子にここで注意してください。

関連する問題