java - type - ¿Por qué la coma(,) no causa un error de compilación?
java enum string (3)
El lenguaje se diseñó de esta manera para que sea fácil agregar y reordenar elementos, especialmente si cada uno está en una línea por sí solo.
La comparación con las variables de declaración no es buena, pero las matrices permiten más valores de la misma manera:
int[] foo = { 1, 2, 3, };
Básicamente, agregar valores adicionales a una colección definida en el código fuente es bastante más común que querer agregar una variable a una declaración.
Estoy escribiendo un código que, de repente, veo que "," no causa ningún error de compilación. Por qué ?
Lo que quiero decir
public enum A {
B, C, ; // no compilation error
}
pero
int a, b, ; // compilation error
Las principales ventajas son que hace que las listas de varias líneas sean más fáciles de editar y que reduce el desorden en las diferencias.
Cambiando:
public enum Names{
MANNY,
MO,
JACK,
}
a:
public enum Names{
MANNY,
MO,
JACK,
ROGER,
}
implica solo un cambio de una línea en el diff:
public enum Names{
MANNY,
MO,
JACK,
+ ROGER,
}
Esto es mejor que la diferencia multilínea más confusa cuando se omite la coma final:
public enum Names {
MANNY,
MO,
- JACK
+ JACK,
+ ROGER
}
La última diferencia hace que sea más difícil ver que solo se agregó una línea y que la otra línea no cambió el contenido.
Basado en la respuesta de Raymond: https://.com/a/11597911/5111897
http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.9
El Enumbody tiene la siguiente especificación:
{ [EnumConstantList] [,] [EnumBodyDeclarations] }
Como puede ver, puede haber una coma opcional después de EnumConstantList, esto es solo una conveniencia de notación.