W ten sam sposób, że podczas definiowania nazwy tabeli w bazie danych lub klasa w Javie użyć liczby pojedynczej na teksty stałe To także najlepsza opcja. Zobacz, jak zamierzasz z niego korzystać.
Napiszmy przykład:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
W postaci pojedynczej widać wyraźnie intencję atrybutu dzień. "dzień" to dzień tygodnia, w którym odbędzie się ta nominacja. W przeciwnym razie podpis metody byłby ustawiony na dzień (dni dni) i na pewno wielu ludzi będzie się zastanawiać, czy spotkanie może nastąpić w więcej niż jeden dzień.
Jeśli pracujesz w firmie jest 48 godziny przesuwa można spróbować zdefiniować coś takiego:
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
ten sposób można ustawić dzień masz zamiar pracować. Ale nadal będzie to wyglądać dziwnie i jest lepszym rozwiązaniem i jest użycie formy pojedynczej:
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Teraz naprawdę pokazują znaczenie wyliczenia. Zwykle w każdej domenie odkryjesz, że używanie liczby pojedynczej do wyliczenia jest najlepszą opcją, ponieważ każda stała w wyliczeniu jest tylko jednym elementem.
Wspomniałeś również o .NET. Wyrażenie "flags" w .NET oznacza po prostu, że jeśli spodziewasz się, że wyliczenie jako parametru rzeczywiście otrzymasz, to lista elementów tego wyliczenia (zapisana jako liczba całkowita).
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Można zrobić to samo w Javie, ale enum nadal będzie liczba pojedyncza:
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;
}
}
Łatwiejszy i bardziej przejrzyste (chociaż wykorzystuje więcej pamięci), aby zrobić to z Java jest po prostu użyj listy.
Myślę, że jest to problem z wysoką względną odpowiedzią. –
[Możesz znaleźć odpowiedź tutaj] (http://stackoverflow.com/questions/3069743/coding-conventions-naming-enums). Wyliczenia to klasy, to znaczy, że powinieneś zadeklarować je w ten sam sposób. – bsiamionau