== Why is this an issue? The `java.util.Iterator.next()` method must throw a `NoSuchElementException` when there are no more elements in the iteration. Any other behavior is non-compliant with the API contract and may cause unexpected behavior for users. === Noncompliant code example [source,java,diff-id=1,diff-type=noncompliant] ---- public class MyIterator implements Iterator { public String next() { if (!hasNext()) { return null; } // ... } } ---- === Compliant solution [source,java,diff-id=1,diff-type=compliant] ---- public class MyIterator implements Iterator { public String next() { if (!hasNext()) { throw new NoSuchElementException(); } // ... } } ---- == Resources === Documentation * https://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html#next--[Java SE 7 API Specification: Iterator] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Add a "NoSuchElementException" for iteration beyond the end of the collection. endif::env-github,rspecator-view[]