Pular para o conteúdo

Java7 – Switch com String e multi-catch

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.
[sourcecode lang=”java”]
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;
}
}
}
[/sourcecode]
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 “|”.

[sourcecode lang=”java”]
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);
}
}
}
[/sourcecode]

As exceções declaradas no catch não podem ser mãe e filha (subclasse).
Se por exemplo declarássemos:
[sourcecode lang=”java”]catch(IOException | FileNotFoundException | UnsupportedEncodingException exc)[/sourcecode]
Teríamos o seguinte erro na compilação:
[sourcecode]
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
[/sourcecode]

até mais,

1 comentário em “Java7 – Switch com String e multi-catch”

  1. Pingback: Operador diamante no Java7 » Roberto Furutani

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *