2015-11-16 2 views
1

Я заметил это в моем правильно скомпилированный код Java сегодня:В Java, почему это объявление массива компилируется?

int[] content = {1,2,3,4,5,6,7,8,9,10, 11, 12, 13, 14, 15,}; 

Там есть дополнительная запятая в конце концов, после 15 - так мне было интересно, является ли это намеренный вещь в Java. Почему компилятор не вызывает ошибку здесь?

+1

Еще одна мерзость на Java; по моему скромному мнению, конечно. – Bathsheba

ответ

3

Из спецификации языка Java, section 10.6: Array initializers:

точки с запятой может появляться после последнего выражения в инициализаторах массива и игнорируются.

Спекуляция: Это упрощает удаление элементов в многострочном инициализаторе путем комментирования любой строки, даже последней.

String[] NAMES = new String[] { 
    "Shaggy", 
    "Scooby", 
    "Fred", 
    "Velma", 
    "Daphne", 
// "Scrappy Doo" 
} 
+0

Я вижу, как это будет удобно, спасибо! – Coffee

+2

Ваши предположения правильные. В книге «Язык программирования Java» (Arnold-Gosling-Holmes) авторы конкретно заявляют, что * Это удобство для многострочных инициализаторов, поэтому вы можете изменять порядок, добавлять или удалять значения, не забывая добавлять запятую к старой последней строки или удалить ее из новой последней строки *. – RealSkeptic

2

Он игнорируется в соответствии с this section of the language specification:

Инициализатор массива записывается в виде списка разделенных запятыми выражений, заключенный в фигурные скобки {и}.

Заключительная запятая может появляться после последнего выражения в инициализаторе массива и игнорируется.

Смежные вопросы