Iterable<String>
является эквивалентом IEnumerable<string>
.
Было бы странностью в системе типов, если массивы реализованы Iterable
. String[]
является экземпляром Object[]
, но Iterable<String>
не является Iterable<Object>
. Классы и интерфейсы не могут одновременно реализовывать один и тот же универсальный интерфейс с разными универсальными аргументами.
String[]
будет работать так же, как Iterable
в расширенном цикле for.
String[]
можно легко превратить в Iterable
:
Iterable<String> strs = java.util.Arrays.asList(strArray);
Предпочитать коллекции массивам (в любом случае для не примитивов). Массивы ссылочных типов немного странные и редко нужны с Java 1.5.