【发布时间】:2013-12-04 02:51:13
【问题描述】:
我正在尝试使用自定义 MapEntries 实现 OrderedMapEntry 列表 - 因为我需要使用 Vectors 的自定义解决方案,所以我不能使用 TreeMap(http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html)。我实现了一个没有任何错误的自定义列表,但是当我在增强的 for 循环中使用 OrderedMapEntries 类时,它返回一个 Object。
-
使用增强的 for 循环时如何确保类型安全?我的实现在确保这种类型安全方面做错了什么?
public class OrderedMapEntries<K, V> implements Iterator, Iterable{ private Vector<MapEntry<K, Vector<V>>> vector; private int vectorIndex; // initializes with -1 class MapEntry<A, B extends AbstractList<V>> implements Iterator, Iterable{ // MapEntry implementation public void insert(int index, K key, Vector<V> vec){ MapEntry<K, Vector<V>> mapEntry = new MapEntry<>(key, vec); vector.add(index, mapEntry); } @Override public MapEntry<K, Vector<V>> next(){ vectorIndex++; return vector[vectorIndex]; } }
我尝试使用增强的 for 循环来迭代集合,但它失败了,因为 next() 返回一个 Object 而不是我指定的元素。
OrderedMapEntries<Integer, String> ome = new OrderedMapEntries<>();
// I filled it with some test data
for (OrderedMapEntries<Integer, String>.MapEntry<Integer, Vector<String>> entry : ome){
;
}
【问题讨论】:
-
请至少发布一个可编译的类。甚至没有声明类型参数
K。 -
谢谢!当我为帖子简化它时,我监督了 K 的问题。