Ich hätte gerne iterierbare Objekte, die einer Schnittstelle entsprechen, aber ich möchte die Wahl lassen, wie die Iterabilität implementiert werden soll (indem beispielsweise Iterator
oder IteratorAggregate
implementiert wird).Ist es möglich, eine Schnittstelle zu implementieren, die Traversable erweitert?
Ich dachte, das den Trick tun könnte:
interface IsTraversable extends Traversable {
// some other stuff here
}
class A implements IsTraversable, IteratorAggregate {
function getIterator() {
return new ArrayIterator(array());
}
}
aber es wirft:
Class A must implement interface Traversable as part of either Iterator or IteratorAggregate
Die Nachricht ein wenig verwirrend ist, wie IteratorAggregate
implementiert ist. Es scheint, dass es eher versucht, mir zu sagen, dass ich Traversable
nicht direkt implementieren kann.
Ist es möglich, meine Anforderung zu implementieren?