Di tanto in tanto devo aggiungere un nuovo valore a un tipo enum nel mio progetto.Come rilevare un nuovo valore è stato aggiunto a un enum e non viene gestito in uno switch
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,
FILENOTFOUND //this one is new one
}
Quello che vorrei è avere un errore di tempo compilazione per ogni interruttore che ho, che non sta trattando il nuovo valore, come questo:
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;
}
Avere un default: che getta qualche eccezione non è abbastanza buona, mi piacerebbe che fosse tempo di compilazione.
Non credo che questo è possibile, ma forse qualcuno ha un trucchetto ...
ho pensato Findbugs avrebbe una regola per trovare quelli, ma ho visto solo questo: Eq: Covariant equals() method defined for enum (EQ_DONT_DEFINE_EQUALS_FOR_ENUM)
EDIT : Scelgo la risposta di Mark, io uso Eclipse e sembra proprio quello di cui avevo bisogno! Non sono affatto un esperto di findbugs quindi potrei aver perso tale funzionalità, anche se non la penso così.
aggiungi commento vicino alla dichiarazione enum :-) –
+1 per aggiungere FILENOTFOUND a un insieme non correlato di costanti enum –
+0 per aggiungere FILENOTFOUND a un insieme non correlato di costanti enum. Perché la gente lo trova ancora divertente? (Non mi interessa l'OP o qualcuno che lo usa in un esempio ad hoc, ma onestamente la gente pensa ancora che questo sia divertente e di conseguenza upvote, anche dopo aver visto questo riferimento come 8000 volte?) –