Нет, спецификация языка явно вызывает массивы отдельно.Массивы не реализуют Iterable<T>
, который является «нормальным» интерфейсом, используемым расширенным циклом for, отличным от массивов.Из раздела 14.14.2 JLS :
расширенный оператор for имеет вид:
EnhancedForStatement:
for ( VariableModifiers Type Identifier: Expression) Statement
Выражение mustлибо имеют тип Iterable
, либо он должен иметь тип массива ( §10.1 ), либо возникает ошибка времени компиляции.
Затем эти два случая обрабатываются отдельно.
Конвертировать массивы в списки, конечно, легко - но, похоже, вам нужно сделать это наоборот.На самом деле не существует «приятного» способа сделать это - и для создания массива, конечно же, нужно копировать все.
Сколько нужно было бы преобразовать, по крайней мере, наиболее часто используемые биты API для использования списков?
Конечно, вы можете писать перегрузки методов, например,
public void foo(String[] array)
{
foo(Arrays.asList(array));
}
public void foo(List<String> list)
{
// Use the list
}
... но выполнение этого для вашего старого кода все равно потребует работы, поскольку реальная реализация в терминах списка,не массив.