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:
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:
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:
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:
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:
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 [...]