Nello stesso modo che quando si sta definendo un nome di tabella in un database o una classe in Java si utilizza singolare per le enumerazioni è anche l'opzione migliore. Guarda come lo userai.
Scriviamo un esempio:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
In forma singolare si vede chiaramente l'intenzione dell'attributo giorno. "giorno" è il giorno della settimana in cui si terrà questo appuntamento. In caso contrario, la firma del metodo sarebbe stata impostata su Giorno di chiusura (giorni) e sicuramente molte persone si staranno chiedendo se l'appuntamento potrebbe avvenire in più di un giorno.
Se si lavora in una società la ha 48 ore si sposta si potrebbe provare a definire qualcosa di simile:
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
In questo modo è possibile impostare i giorni si sta andando a lavorare. Ma ancora sembrerà strano e v'è una scelta migliore ed è quella di utilizzare la forma singolare:
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Ora è davvero sta mostrando il significato della enum. Di solito in qualsiasi dominio scoprirai che usare singolarmente per enum è l'opzione migliore dato che ogni costante nell'enum è solo un elemento.
Si parla anche di .NET. Un enum di "flag" in .NET significa semplicemente che quando si aspetta che enum come parametro ciò che si ottiene realmente è un elenco di elementi di quell'enumerazione (memorizzati come numeri interi).
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Si potrebbe fare lo stesso in Java, ma l'enum ancora sarà singolare:
public enum Hue {
BLACK, RED, GREEN, BLUE;
private final Integer hue;
Hue() {
this.hue = 1 << this.ordinal();
}
public Integer toFlag() {
return this.hue;
}
}
public class MultiHue {
private Integer hues = 0;
public void addHue(Hue hue) {
this.hues |= hue.toFlag();
}
public boolean hasHue(Hue hue) {
return (this.hues & hue.toFlag()) != 0;
}
}
Un semplice e più chiaro (anche se usa un più memoria) per fare questo con Java è solo quello di usa una lista.
Penso che questo sia un problema con una risposta relativa elevata. –
[Puoi trovare la risposta qui] (http://stackoverflow.com/questions/3069743/coding-conventions-naming-enums). Le enumerazioni sono classi, vuol dire che dovresti dichiararle allo stesso modo. – bsiamionau