De temps en temps, je dois ajouter une nouvelle valeur à un type enum dans mon projet.Comment détecter une nouvelle valeur a été ajouté à une énumération et n'est pas géré dans un commutateur
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,
FILENOTFOUND //this one is new one
}
Ce que je voudrais est d'avoir une erreur de compilation pour chaque commutateur je qui ne traite pas la nouvelle valeur, comme celui-ci:
switch (color) {
case MONDAY:
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY: System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY: System.out.println("Weekends are best.");
break;
}
Avoir un défaut: que lancers francs une exception n'est pas assez bonne, je voudrais que ce soit la compilation.
Je ne pense pas que ce soit possible, mais peut-être quelqu'un a une astuce ...
Je pensais que Findbugs aurait une règle pour trouver ceux mais je ne ai vu ceci: Eq: Covariant equals() method defined for enum (EQ_DONT_DEFINE_EQUALS_FOR_ENUM)
EDIT : Je choisis la réponse de Mark, j'utilise Eclipse et ça ressemble à ce dont j'avais besoin! Je ne suis pas un expert en findbugs du tout, donc j'ai peut-être manqué une telle fonctionnalité, bien que je ne le pense pas.
ajouter un commentaire near enum declaration :-) –
+1 pour ajouter FILENOTFOUND à un ensemble non apparenté de constantes d'enum –
+0 pour ajouter FILENOTFOUND à un ensemble de constantes enum sans rapport. Pourquoi les gens trouvent-ils encore ça drôle? (Cela ne me dérange pas l'OP ou quelqu'un l'utilisant dans un exemple ad hoc, mais honnêtement, les gens pensent toujours que c'est drôle et upvote en conséquence, même après avoir vu cette référence comme 8000 fois?) –