Genauso wie Sie beim Definieren eines Tabellennamens in einer Datenbank oder einer Klasse in Java Singular für Aufzählungen verwenden, ist dies auch die beste Option. Sehen Sie einfach, wie Sie es verwenden werden.
Schreiben wir ein Beispiel:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
In singulärer Form sehen Sie deutlich die Absicht des Tagesattributs. "Tag" ist der Wochentag, an dem dieser Termin stattfinden wird. Andernfalls wäre die Signatur der Methode setDay (Days day) gewesen, und sicher werden sich viele Leute fragen, ob der Termin in mehr als einem Tag stattfinden könnte.
Wenn Sie in einem Unternehmen mit 48-Stunden-Schichten arbeiten, können Sie versuchen, Folgendes zu definieren:
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Auf diese Weise können Sie die Tage festlegen, an denen Sie zur Arbeit gehen. Trotzdem wird es seltsam aussehen und es gibt eine bessere Option und die Verwendung der Singularform:
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Jetzt zeigen Sie wirklich die Bedeutung der Aufzählung. Normalerweise werden Sie in jeder Domäne feststellen, dass die Verwendung von Singular für eine Aufzählung die beste Option ist, da jede Konstante in der Aufzählung nur ein Element ist.
Sie erwähnen auch .NET. Eine "Flags" -Aufzählung in .NET bedeutet nur, dass Sie, wenn Sie diese Aufzählung als Parameter erwarten, tatsächlich eine Liste der Elemente dieser Aufzählung erhalten (als Ganzzahl gespeichert).
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Sie könnten dasselbe in Java tun, aber die Aufzählung wird immer noch singulär sein:
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;
}
}
Eine einfachere und klarere Möglichkeit (obwohl mehr Speicher benötigt wird), dies mit Java zu tun, ist die Verwendung einer Liste.