Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PlantUML Macro
class EverySecondIterator implements Iterator<Object> {
	Iterator<Object> iteratorDelegate
	EverySecondIterator(Iterator<Object>)
	boolean hasNext()
	Object next()
}
interface "Iterator<Object>" as iterator {
}
iterator <|-- EverySecondIterator
EverySecondIterator --> iterator: iteratorDelegate
Code Block
languagejava
public class EverySecondIterator implements Iterator<Object> {
	
	private Iterator<Object> iteratorDelegate;
    
    public EverySecondIterator(Iterator<Object> iterator) {
        this.iteratorDelegate = iterator;
    }
    
    @Override
    public boolean hasNext() {
        return iteratorDelegate.hasNext();
    }

	@Override
    public Object next() {
        Object o = iteratorDelegate.next();
        if (iteratorDelegate.hasNext()) {
            iteratorDelegate.next();
        }
        return o;
    }
}
Vi ser at hvert kall til hasNext() vil resultere i et kall til hasNext()delegaten (iteratorDelegate). Hvert kall vil next() vil imidlertid gi først et kall til next()delgaten og så et kall til hasNext() og evt. et nytt kall til next().
PlantUML Macro
Hovedprogram --> EverySecondIterator: hasNext()
EverySecondIterator --> "iteratorDelegate: Iterator<Object>": hasNext()
Hovedprogram --> EverySecondIterator: next()
EverySecondIterator --> "iteratorDelegate: Iterator<Object>": next()
EverySecondIterator --> "iteratorDelegate: Iterator<Object>": hasNext()
EverySecondIterator --> "iteratorDelegate: Iterator<Object>": next()

...