我想这样写一个Interator:
class Plant { }
class Tree extends Plant { }
class Maple extends Tree { }
// Iterator class: compiler error on the word "super".
class MyIterator<T super Maple> implements Iterator<T> {
private int index = 0;
private List<Maple> list = // Get the list from an external source.
public T next() {
Maple maple = list.get(index++);
// Do some processing.
return maple;
}
// The other methods of Iterator are easy to implement.
}
从概念上讲,它的想法是让一个迭代器看起来像它返回Trees或Plants(即使它们始终是Maples),而无需为每个迭代器编写单独的类。
但是当我用
T super Maple
进行生成时,编译器不喜欢它。显然,您只能使用T extends Something
来生成一个类。有谁知道完成同一件事的好方法?我发问的动机是我有一个使用接口(interface)为其API的程序。我想要一种方法返回接口(interface)的迭代器(用于API),而另一种方法返回实现类的迭代器(供内部使用)。
最佳答案