No Java 7, temos um recurso bastante interessante que é o uso de String no bloco switch. Na minha opinião, é um recurso útil que demorou bastante para ser incorporado na linguagem.
Pontos importantes:
- É proibido o uso de null nas cláusulas case
- O uso de null na verificação do switch irá gerar um NullPointerException
- Os elementros utilizados nas cláusulas case tem que ter o modificador final
- Não é permitido valores duplicados no case
Exemplo de código correto:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | String nome = "Thiago" ; final String SOBRENOME = "Vespa" ; switch (nome) { case "Thiago" : System.out.println( "Esse é o meu primeiro nome!" ); break ; case "Galbiatti" : System.out.println( "Esse é o meu nome do meio!" ); break ; case SOBRENOME: System.out.println( "Esse é o meu sobrenome!" ); break ; default : System.out.println( "Não sei o que é isso!" ); } |
Exemplo de código não compilável ao utilizar null no case:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | String nome = "Thiago" ; final String SOBRENOME = "Vespa" ; switch (nome) { case "Thiago" : System.out.println( "Esse é o meu primeiro nome!" ); break ; case "Galbiatti" : System.out.println( "Esse é o meu nome do meio!" ); break ; case SOBRENOME: System.out.println( "Esse é o meu sobrenome!" ); break ; case null : System.out.println( "Null não pode!" ); break ; default : System.out.println( "Não sei o que é isso!" ); } |
Exemplo de código que gera um NullPointerException:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | String nome = null ; final String SOBRENOME = "Vespa" ; switch (nome) { case "Thiago" : System.out.println( "Esse é o meu primeiro nome!" ); break ; case "Galbiatti" : System.out.println( "Esse é o meu nome do meio!" ); break ; case SOBRENOME: System.out.println( "Esse é o meu sobrenome!" ); default : System.out.println( "Não sei o que é isso!" ); } |
Exemplo de código não compilável por não possuir o modificador final e ser utilizado no case:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | String nome = "Thiago" ; String SOBRENOME = "Vespa" ; switch (nome) { case "Thiago" : System.out.println( "Esse é o meu primeiro nome!" ); break ; case "Galbiatti" : System.out.println( "Esse é o meu nome do meio!" ); break ; case SOBRENOME: System.out.println( "Esse é o meu sobrenome!" ); break ; default : System.out.println( "Não sei o que é isso!" ); } |
E por último, exemplo de um código não compilável por ter elementos duplicados no case:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | String nome = "Thiago" ; final String SOBRENOME = "Vespa" ; switch (nome) { case "Thiago" : System.out.println( "Esse é o meu primeiro nome!" ); break ; case "Thiago" : System.out.println( "Esse é o meu primeiro nome novamente!" ); break ; case SOBRENOME: System.out.println( "Esse é o meu sobrenome!" ); break ; default : System.out.println( "Não sei o que é isso!" ); } |
É isso. Agora só usar String no switch.
[...] String no switch [...]