【发布时间】:2014-08-11 00:47:02
【问题描述】:
我想要一个类,其中一些方法返回不同的 Iterable,如下所示:
public class MyClass<T extends Comparable<T>> {
...
public Iterable<T> iterable1() {
return new Iterable1<T>();
}
public Iterable<T> iterable2() {
return new Iterable2<T>();
}
public Iterable<T> iterable3() {
return new Iterable3<T>();
}
}
但我还想要 MyClass 类的默认 Iterable(比如说 Iterable1)。 我知道我可以让 MyClass 扩展 Iterable 并在其中实现默认策略,但我不想这样做,因为我想要一个干净的接口。
我希望能够写作:
for(T t : myClass) //Here it should use Iterable1
//do something
或
for(T t : myClass.iterable1()) //Here it should use Iterable1 again
//do something
和
for(T t : myClass.iterable2()) //Here it uses Iterable2
//do something
等等。 不过,我想不出很多模式来实现这一点。
【问题讨论】: