We shouldn’t have to think about this, and languages like Groovy let us get around it. Since, I like this, I decided to back-port the idea into Java code, so now I have the following available to me in Java:

Iteration.each(collection, new ObjectUser() {
public void use(Object o) {
// do something with the element from the collection
}
});
Iteration.each(objectArray, new ObjectUser() {
public void use(Object o) {
// do something with the element from the Object[]
}
});
Iteration.each(string, new ObjectUser() {
public void use(Object o) {
// do something with the Character from the String
}
});