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. Regardez simplement comment vous allez l'utiliser.
Écrivons un exemple:
public enum Jour {
DIMANCHE, LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI
}
class RendezVous {
private Jour jour;
public void setJour(Jour jour) {
this.jour = jour;
}
}
Sous sa forme singulière, on voit clairement l'intention de l'attribut jour. "jour" c'est le jour de la semaine où ce rendez-vous aura lieu. Sinon, la signature de la méthode aurait été setJour(Jours jour) et beaucoup de gens se demanderaient certainement si le rendez-vous pourrait avoir lieu en plus d'un jour.
Si vous travaillez dans une entreprise qui a des quarts de travail de 48 heures, vous pourriez essayer de définir quelque chose comme:
public enum Jours {
LUNDI_MARDI, MERCREDI_JEUDI, VENDREDI_SAMEDI
}
De cette manière, vous pourriez définir les jours où vous allez travailler. Mais cela aura toujours l'air bizarre et il y a une meilleure option qui est d'utiliser la forme singulière:
public enum Quart {
LUNDI_MARDI, MERCREDI_JEUDI, VENDREDI_SAMEDI
}
Maintenant, vous montrez vraiment la signification de l'énumération. Habituellement, dans n'importe quel domaine, vous constaterez qu'utiliser le singulier pour une énumération est la meilleure option, car chaque constante de l'énumération est juste un élément.
Vous mentionnez également .NET. Une énumération "flags" en .NET signifie simplement que lorsque vous attendez cette énumération en tant que paramètre, ce que vous obtenez vraiment est une liste d'éléments de cette énumération (stockée sous forme d'entier).
// Définir une énumération avec l'attribut FlagsAttribute.
[FlagsAttribute]
enum MultiTeinte : short
{
Noir = 0,
Rouge = 1,
Vert = 2,
Bleu = 4
};
public void setMultiTeinte(MultiTeinte teintes);
Vous pourriez faire la même chose en Java, mais l'énumération restera singulière:
public enum Teinte {
NOIR, ROUGE, VERT, BLEU;
private final Integer teinte;
Teinte() {
this.teinte = 1 << this.ordinal();
}
public Integer toFlag() {
return this.teinte;
}
}
public class MultiTeinte {
private Integer teintes = 0;
public void addTeinte(Teinte teinte) {
this.teintes |= teinte.toFlag();
}
public boolean hasTeinte(Teinte teinte) {
return (this.teintes & teinte.toFlag()) != 0;
}
}
Une manière plus simple et claire (bien que cela utilise plus de mémoire) de le faire avec Java est simplement d'utiliser une Liste.