Feature Java: Switch Expressions
O Java continua a ser uma das linguagens de programação mais utilizadas e confiáveis do mundo, evoluindo constantemente para atender às demandas dos desenvolvedores modernos por maior eficiência e clareza no código. Com o lançamento do Java 14, a linguagem introduziu uma mudança significativa na forma como os desenvolvedores podem gerenciar o fluxo de controle: as Switch Expressions. Esta nova funcionalidade não só simplifica o código, como também o torna mais intuitivo e seguro. Neste post, vamos explorar em detalhes o que são as Switch Expressions, suas vantagens e como você pode utilizá-las para otimizar a escrita do seu código Java.
Quais melhorias foram implementadas no comando Switch?
Até o Java 13, o switch era restrito a ser utilizado apenas como uma declaração, adequado principalmente para controle de fluxo, mas incapaz de retornar um valor diretamente. Contudo, a partir do Java 14, a Switch Expression transforma essa limitação, permitindo que o switch seja empregado para calcular valores de maneira mais concisa e com menor risco de erros. É importante destacar, no entanto, que o Java 12 e 13 já haviam introduzido essa funcionalidade em modo preview, preparando o terreno para essa evolução.
Vantagens
-
Menos Verbosidade: O novo formato reduz a necessidade de múltiplos break statements, tornando o código mais conciso e fácil de ler.
-
Prevenção de Erros: Ao forçar cada caso a ser expressivo o suficiente para formar uma expressão completa, reduz-se o risco de "fall-through" acidental, onde a execução passa de um caso para outro inesperadamente.
-
Retorno Direto: As expressões switch podem usar a palavra-chave yield para retornar valores, facilitando a integração em fluxos de dados mais complexos.
Como Usar
Vamos ver dois exemplos simples de como as expressões switch podem ser usadas para melhorar a clareza e a eficácia do código:
Exemplo 1
int mes = 4;
String estacao = switch (mes) {
case 12, 1, 2 -> "Verão";
case 3, 4, 5 -> "Outono";
case 6, 7, 8 -> "Inverno";
case 9, 10, 11 -> "Primavera";
default -> throw new IllegalArgumentException("Mês inválido: " + mes);
};
System.out.println("A estação é: " + estacao);
Neste exemplo, o switch avalia o mês e retorna imediatamente a estação correspondente. A simplicidade do código reduz a chance de erros e torna-o extremamente legível.
Exemplo 2
int idade = 25;
String categoria = switch (idade) {
case 0, 1, 2, 3, 4, 5 -> "Infantil";
case 6, 7, 8, 9, 10, 11, 12 -> "Criança";
case 13, 14, 15, 16, 17 -> "Adolescente";
default -> {
if (idade < 0) {
yield "Idade inválida";
} else if (idade <= 64) {
yield "Adulto";
} else {
yield "Idoso";
}
}
};
System.out.println("Categoria: " + categoria);
Neste exemplo, empregamos a estrutura switch
para classificar a faixa etária de uma pessoa de acordo com sua idade. As três primeiras categorias — "Infantil", "Criança" e "Adolescente" — são tratadas de forma direta, utilizando a sintaxe de seta → para retornar imediatamente o valor correspondente. Já para as categorias "Adulto" e "Idoso", que exigem uma análise mais detalhada, recorremos ao uso da palavra-chave yield
. Esta permite o retorno de valores após a execução de um bloco de código mais complexo, garantindo que a determinação da categoria seja tanto precisa quanto flexível.
Conclusão
As inovações introduzidas no Java 14, especialmente no que diz respeito às Switch Expressions, oferecem aos desenvolvedores a oportunidade de criar um código mais claro e expressivo. Incentivamos você a experimentar as expressões switch em seus projetos para explorar como elas podem aprimorar significativamente a legibilidade e facilitar a manutenção do seu código.