【发布时间】:2011-02-15 18:53:14
【问题描述】:
我有以下使用泛型的代码:
设置 membersKeySet = membersList.keySet(); IteratorEclipse 告诉我“Set 是一种原始类型。对泛型类型
附:我仍然在使用泛型。
【问题讨论】:
标签: java generics implementation
我有以下使用泛型的代码:
设置 membersKeySet = membersList.keySet(); IteratorEclipse 告诉我“Set 是一种原始类型。对泛型类型
附:我仍然在使用泛型。
【问题讨论】:
标签: java generics implementation
如果存储在集合中的对象是DoubleKey<Integer, Integer>的实例,那么代码应该是这样的:
Set<DoubleKey<Integer, Integer>> membersKeySet = membersList.keySet();
Iterator<DoubleKey<Integer, Integer>> membersItr = membersKeySet.iterator();
while(membersItr.hasNext()){
DoubleKey<Integer, Integer> dk = membersItr.next();
}
【讨论】:
您应该定义键集的类型。
Set<DoubleKey> membersKeySet = membersList.keySet();
能否请您提供memberList 定义以提供完整图片?
【讨论】:
嗯,取决于 membersList 是什么,我希望这是解决方案:
Set<DoubleKey> membersKeySet = membersList.keySet();
如果membersList也是使用原始类型声明的,它会变得更棘手......但是当你检查这是否是你所需要的一切时,我们会越过那座桥:)
【讨论】:
从您提供的代码来看,membersList 实际上是某种地图。因此,为了获得泛型的编译时类型安全,应该适当地定义 membersList,例如
Map<DoubleKey, Object> membersList = new HashMap<DoubleKey, Object>();
Set<DoubleKey> membersKeySet = membersList.keySet();
这样,您的迭代器应该可以正常工作了。
【讨论】:
通常您会使用紧凑的 for 循环表示法:
while(DoubleKey如果您到处使用DoubleKey&lt;Integer, Integer&gt;,请考虑将其单独设为一个类:
【讨论】: