Cuando comenzaba a programar en Java, el hecho de que las declaraciones de cambio no tomaran cadenas me frustraba. Luego, al usar Enums, me di cuenta de los beneficios que obtienes con ellos en lugar de pasar valores en bruto: seguridad de tipo (que brinda una refactorización más fácil) y también claridad para otros desarrolladores.
Me cuesta pensar en una situación en la que con SE7 ahora decidiré usar un interruptor con cadenas como entradas en lugar de Enums. Si se implementan activando cadenas enteras (por ejemplo, en lugar de coincidencias parciales o expresiones regulares), no parece ofrecer menos razones para que el código cambie.
Y con las herramientas IDE y la relación de lectura y escritura de la codificación, sería mucho más feliz generar automáticamente una enumeración adicional que pasar valores de cadena.
¿Qué beneficio nos aportan como programadores? ¿Menos placa de caldera?
No parece que el idioma estuviera pidiendo esta característica. Aunque tal vez hay un caso de uso que estoy pasando por alto.