イテレータ インターフェイスの機能を拡張する方法があるかどうか疑問に思っていました。Iterable インターフェースを実装する Class があるとします (上記の例では、Iterator インターフェースのオーバーライドされた関数の代わりに、myFunction を追加しました)。
public class MyClass implements Iterable{
@Override
public Iterator iterator() {
return new Iterator() {
@Override
public boolean hasNext() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Tuple next() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void myFunction(){
}
};
}
}
このコードを別の関数に入れると、コンパイル エラー (「シンボルが見つかりません」) が発生し、なぜこれが起こるのか疑問に思っていました。
public void anotherFunction(){
MyClass a = new MyClass();
a.iterator().myFunction();
}