If you've gone to the trouble of writing an ``++iterator++`` method in a class that doesn't implement ``++Iterable++``, that trivial omission is costing you half the benefit of the method because you can't use the class in enhanced ``++for++`` loops. 


== Noncompliant Code Example

----
public class MyList {  // Noncompliant
  public Iterator iterator() {
    //...
  }
}

public class MyClass {

  public void doSomething(MyList myList) {
    Iterator itr = myList.iterator();
    while (itr.hasNext() {
      Object obj = itr.next(); 
      processObj(obj);
    }
  }
}
----


== Compliant Solution

----
public class MyList implements Iterable{
  public Iterator iterator() {
    //...
  }
}

public class MyClass {

  public void doSomething(MyList myList) {
    for(Object obj : myList) {
      processObj(obj);
    }
  }
}
----



ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]
