Я пишу код, который и вдруг вижу, что «,» не вызывает ошибки компиляции. Зачем ?Почему запятая (,) не вызывает ошибку компиляции?
Что я имею в виду
public enum A {
B, C, ; // no compilation error
}
но
int a, b, ; // compilation error
Я пишу код, который и вдруг вижу, что «,» не вызывает ошибки компиляции. Зачем ?Почему запятая (,) не вызывает ошибку компиляции?
Что я имею в виду
public enum A {
B, C, ; // no compilation error
}
но
int a, b, ; // compilation error
http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.9
Enumbody имеет следующие характеристики:
{ [EnumConstantList] [,] [EnumBodyDeclarations] }
Как вы можете видеть, что может быть необязательным запятая после EnumConstantList, это просто для удобства записи.
единственное возможное неудобство, являющееся просмотром кода, где рецензент не нравится, потому что «он не используется ни в JDK, ни в остальном нашем коде» – Vlasec
язык был разработан таким образом, чтобы он был легко добавлять и изменять порядок элементов - в частности, если каждый из них находится на линии самостоятельно.
Сравнение с объявляя переменные не хороший, но массивы позволяют более значений таким же образом:
int[] foo = { 1, 2, 3, };
В основном, добавив на дополнительные ценности в коллекцию, определенного в исходном коде более распространены, чем желание добавить переменную в оператор объявления.
Основные преимущества в том, что он упрощает редактирование многострочных списков и уменьшает беспорядок в разностях.
Изменение:
public enum Names{
'manny',
'mo',
'jack',
}
к:
public enum Names{
'Manny'
'mo',
'jack',
'roger',
}
предполагает только изменение одной строки в диффе:
public enum Names{
'manny',
'mo',
'jack',
+ 'roger',
}
Это бьет более запутанный диф многострочных когда задняя запятая была опущена:
public enum Names {
'manny',
'mo',
- 'jack'
+ 'jack',
+ 'roger'
}
Последний дифференциал затрудняет просмотр только одной строки и что другая строка не меняет контент.
На основании ответа Раймонда: https://stackoverflow.com/a/11597911/5111897
Вы должны, по крайней мере, сделать компилируемый код. Цитированные значения не являются допустимыми идентификаторами перечисления. Плюс вы забыли запятую после «Манни». –
ссылка? просто простой ответ. в чем причина вашей агрессии? –
Это интересный вопрос, я никогда не знал, что добавочная запятая в перечислении приемлема – Reza
Синтаксис Java основан на семействе языков C, и, насколько я знаю, так оно и делается в C, для массивов в любом случае. –