我想有一些方法返回不同的可迭代像這樣一類:默認可迭代加上其他可迭代
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類默認可迭代(假設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
等。儘管如此,我想不出有多少模式可以完成這個任務。
我在想用擴展的一些技巧。 MyClass擴展了Iterable1或類似的東西。 – Kami