Мне, должно быть, что-то не хватает.
В Java 5 был введен оператор "for-each loop" (также называемый расширенным циклом). Похоже, что он был введен в основном для итерации через подборки. Любой класс коллекции (или контейнера), который реализует интерфейс Iterable, имеет право на итерацию, используя цикл for for each. Возможно, по историческим причинам массивы Java не реализовали интерфейс Iterable. Но поскольку массивы были/повсеместны, javac согласился бы использовать цикл for для каждого цикла на массивах (генерируя байт-код, эквивалентный традиционному циклу).
Существуют ли технические причины, по которым javac не может быть расширен, чтобы принимать массивы в forEach, так же как он принимает их в расширенном цикле? Похоже, что генерация кода возможна, не требуя реализации массивов Iterable. Я наивна?
Это особенно важно для новичков на языке, который скорее использует массивы из-за их синтаксической легкости. Слишком естественно переключиться на Списки и использовать Arrays.asList(1, 2, 3).