Java7 – Switch com String e multi-catch
21/agosto/2011 - Java
Olá,
Instalei o Java 7 para testar alguns novos recursos.
Link para download
Vamos aos dois mais básicos, porém muito úteis.
1. switch
Agora no Java 7 é possível fazer switch de Strings.
Como sempre, o comando é case-sensitive.
public class Java7 { public static void main(String [] args){ String cor = "azul"; switch(cor){ case "verde": System.out.println("Cor verde"); break; case "amarelo": System.out.println("Cor amarelo"); break; case "azul": System.out.println("Cor azul"); break; case "Azul": System.out.println("Cor Azul"); break; default: System.out.println("Cor indefinida"); break; } } }
Nesse exemplo a saída seria: Cor azul
2. catch múltiplos
Nessa versão é possível com uma única declaração de catch “pegar” várias exceções.
Basta separar as exceções por pipe “|”.
import java.io.*; public class Java7 { public static void main(String [] args){ try { FileInputStream fis = new FileInputStream("arquivo.txt"); DataInputStream dis = new DataInputStream(fis); BufferedReader br = new BufferedReader(new InputStreamReader(dis, "UTF-8")); String linha; while ((linha = br.readLine()) != null){ System.out.println (linha); } } catch(IOException | NullPointerException exc){ System.out.println("Deu erro " + exc); } } }
As exceções declaradas no catch não podem ser mãe e filha (subclasse).
Se por exemplo declarássemos:
catch(IOException | FileNotFoundException | UnsupportedEncodingException exc)
Teríamos o seguinte erro na compilação:
Java7.java:16: error: Alternatives in a multi-catch statement cannot be related by subclassing } catch(IOException | FileNotFoundException | UnsupportedEncodin gException exc){ ^ Alternative FileNotFoundException is a subclass of alternative IOException Java7.java:16: error: Alternatives in a multi-catch statement cannot be related by subclassing } catch(IOException | FileNotFoundException | UnsupportedEncodin gException exc){ ^ Alternative UnsupportedEncodingException is a subclass of alternative IOExcept ion 2 errors
até mais,
agosto 13th, 2012 at 21:00
[…] já faz quase um ano que escrevi dois posts sobre java 7, um sobre arquivos e outro sobre switch e catch multiplos. Hoje o post é sobre o diamante <>, o […]