具有类型混淆的自定义Java迭代器

我有一个generics类捆绑一个对象和一个订单:

public class OrderedObject { private int order; private T object; public OrderedObject(int order, T object) { this.order = order; this.object = object; } public int getOrder() { return order; } public T getObject() { return object; } } 

我开发了一个Set实现,它存储OrderedObject实例,并希望按照内置顺序强制执行的顺序生成Iterator

 public class OrderedObjectSet extends AbstractSet implements Set { Set<OrderedObject> s = new HashSet<OrderedObject>(); public boolean add(int order, T object) { return s.add(new OrderedObject(order, object)); } public Iterator iterator() { return new OrderedObjectSetIterator(); } public int size() { return s.size(); } private class OrderedObjectSetIterator implements Iterator { private int index; public boolean hasNext() { return index < s.size(); } public T next() { T object = null; for (Iterator<OrderedObject> it = s.iterator(); it.hasNext(); ) { OrderedObject o = it.next(); if (o.getOrder() == index) { object = o.getObject(); } } index++; return object; } public void remove() { throw new UnsupportedOperationException(); } } } 

后一类没有编译,因为Iterator初始化中的类型似乎有些混乱

 for (Iterator<OrderedObject> it = s.iterator(); it.hasNext(); ) { 

我有什么看法?

令人困惑的是,内部类OrderedObjectSetIterator引入了一个名为same( T )的generics类型作为外部类。 Eclipse IDE显示警告:

 The type parameter T is hiding the type T 

所以我猜你不需要引入另一个参数类型,只需使用外部类定义的相同。

基本上,内部类将定义为:

 private class OrderedObjectSetIterator implements Iterator { .... 

并且迭代器方法如下:

 public Iterator iterator() { return new OrderedObjectSetIterator(); }