63 lines
1.1 KiB
Plaintext
63 lines
1.1 KiB
Plaintext
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
|
|
|
|
[source,java]
|
|
----
|
|
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
|
|
|
|
[source,java]
|
|
----
|
|
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[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|