Consider the following bits of Java code:
for(ArrayList<String> str : strList) {
// something
}
for(Iterable<String> str : strList) {
// something
}
Depending on what happens inside the loop, it may well not be necessary to use ArrayList or List, but we can instead of Iterable.
Does this have a performance benefit or is it purely a conceptual thing where you define it to tell the reader of the code that this is all you'll ever be doing with the object?