De la même manière que lorsque vous définissez un nom de table dans une base de données ou une classe en Java, vous utilisez le singulier pour les énumérations, c'est également la meilleure option. Voyez simplement comment vous allez l'utiliser.
Écrivons un exemple:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
Au singulier, vous voyez clairement l'attribut intention de la journée. «jour» c'est le jour de la semaine où ce rendez-vous aura lieu. Sinon, la signature de la méthode aurait été définieDay (Days day) et à coup sûr beaucoup de gens se demanderont si le rendez-vous pourrait avoir lieu dans plus d'un jour.
Si vous travaillez dans une entreprise qui a des quarts de travail de 48 heures, vous pouvez essayer de définir quelque chose comme:
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
De cette façon, vous pouvez définir les jours où vous allez travailler. Mais cela aura toujours l'air bizarre et il y a une meilleure option et utiliser la forme singulière:
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Maintenant, vous montrez vraiment la signification de l'énumération. Habituellement, dans n'importe quel domaine, vous trouverez que l'utilisation du singulier pour une énumération est la meilleure option car chaque constante de l'énumération n'est qu'un élément.
Vous mentionnez également .NET. Une énumération «flags» dans .NET signifie simplement que lorsque vous attendez cette énumération comme paramètre, vous obtenez réellement une liste d'éléments de cette énumération (stockée sous forme d'entier).
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Vous pouvez faire la même chose en Java, mais l'énumération sera toujours singulière:
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 moyen plus facile et plus clair (bien que cela utilise plus de mémoire) pour faire cela avec Java est simplement d'utiliser une liste.