为什么类型参数Entry隐藏了Map.Entry类型?

时间:2013-09-07 15:57:53

标签: java generics

Eclipse使用“类型参数条目隐藏类型Map.Entry ”来抱怨此代码:

import java.util.Map.Entry;

public class Test {
     static abstract class EntryIterator<Entry<K, V>> implements Iterator<K, V> {
     }
}

我不太明白这里的问题是什么 - 问题的类型是 java.util.Map.Entry。那影子本身怎么样?我该如何声明内部类以使其编译?

2 个答案:

答案 0 :(得分:4)

问题在于声明的这一部分:

class EntryIterator<Entry<K, V>> 

那是在尝试声明一个名为Entry<K, V>参数(这是无效的)。然后你说该类实现 Iterator<K, V>,这也是无效的,因为Iterator只有一个类型参数。

我怀疑你的意思是:

class EntryIterator<K, V> implements Iterator<Entry<K, V>>

答案 1 :(得分:0)

我认为你的意思是

static abstract class EntryIterator<T extends Entry<?, ?>> implements Iterator<T>

这将约束条目Iterator的泛型参数T,使其必须是某个条目的条目。使用

创建实例
new EntryIteartor<Map.Entry<K, V>>(...);