Cómo detectar un nuevo valor se agregó a una enumeración y no se maneja en un conmutador

De vez en cuando tengo que agregar un nuevo valor a un tipo de enumeración en mi proyecto.

public enum Day {
  SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, 
   FILENOTFOUND //this one is new one
}

Lo que me gustaría es tener unerror de tiempo de compilación por cada cambio que tengo que no trata el nuevo valor, como este:

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;
    } 

Tener un valor predeterminado: que arroja alguna excepción no es lo suficientemente bueno, me gustaría que sea tiempo de compilación.

No creo que esto sea posible, pero tal vez alguien tenga un buen truco ...

Pensé que Findbugs tendría una regla para encontrarlos, pero solo vi esto:Eq: Método covariante equals () definido para enum (EQ_DONT_DEFINE_EQUALS_FOR_ENUM)

EDITAR: ¡Elijo la respuesta de Mark, uso Eclipse y eso suena exactamente como lo que necesitaba! No soy un experto en findbugs en absoluto, por lo que podría haber perdido tal funcionalidad, aunque no lo creo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta