我想写一个这样的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.
}
从概念上讲,这个想法是有一个看起来像它返回树或植物(即使它们总是枫树)的迭代器,而无需为每个迭代器编写单独的类。
T super Maple
但是当我用;进行泛化时,编译器不喜欢它。显然你只能使用T extends Something
. 有谁知道完成同样事情的好方法?
我问的动机是我有一个程序,它使用 API 的接口。我想要一种方法返回接口的迭代器(用于 API),另一种方法返回实现类的迭代器(供内部使用)。