Feature Java: Primitive Types in instanceof and switch

Por Gaspar Barancelli Junior em 03 de agosto de 2024
Imagem ilustrativa sobre o post Feature Java: Primitive Types in instanceof and switch

O Java 23, com previsão de lançamento para o dia 17/09/2024 disponibilizará a implementação da JEP 455, intitulada "Primitive Types in Patterns, instanceof, and switch (Preview)", é uma proposta que visa aprimorar o suporte a tipos primitivos em diversos contextos de padrões, incluindo instanceof e switch. Esta melhoria busca tornar a linguagem Java mais uniforme e expressiva, eliminando restrições que causam atrito ao usar tipos primitivos.

Este post tem como objetivo apresentar alguns exemplos práticos de utilização da nova funcionalidade.

Exemplo 1: Uso de Padrões Primitivos com instanceof

A JEP 455 permite que instanceof verifique e faça casts seguros para tipos primitivos. Veja como isso funciona na prática:

int i = 1000;

if (i instanceof byte b) {
    // Esta verificação falhará, pois 1000 não pode ser convertido para byte sem perda de dados
    System.out.println("O valor pode ser convertido para byte: " + b);
} else if (i instanceof float f) {
    // Esta verificação passará, pois 1000 pode ser convertido para float sem perda de dados
    System.out.println("O valor pode ser convertido para float: " + f);
}

Neste exemplo, o uso de instanceof com tipos primitivos permite verificar a segurança da conversão antes de executá-la, prevenindo possíveis perdas de dados.

Exemplo 2: Uso de Padrões Primitivos com switch

A JEP 455 também estende o suporte a tipos primitivos em switch, permitindo casos mais flexíveis e seguros:

int status = x.getStatus();

String statusMessage = switch (status) {
    case 0 -> "okay";
    case 1 -> "warning";
    case 2 -> "error";
    case int s -> "unknown status: " + s;
};

System.out.println(statusMessage);

Com este exemplo, o uso de padrões primitivos em switch permite transformar o cláusula default em um caso que expõe o valor correspondido, melhorando a clareza e a segurança do código.

Para ilustrar ainda mais o uso de switch com padrões primitivos, utilizaremos o when, vejamos um exemplo que valida códigos de status HTTP e retorna uma descrição adequada.

int status = x.getStatus();

String statusMessage = switch (status) {
    case 100 -> "Continue";
    case 102 -> "Processing";
    case 200 -> "OK";
    case 201 -> "Created";
    case 204 -> "No Content";
    case 301 -> "Moved Permanently";
    case 302 -> "Found";
    case 400 -> "Bad Request";
    case 500 -> "Internal Server Error";
    case 502 -> "Bad Gateway";
    case int s when s >= 100 && s < 200 -> "Informational";
    case int s when s >= 200 && s < 300 -> "Successful";
    case int s when s >= 300 && s < 400 -> "Redirection";
    case int s when s >= 400 && s < 500 -> "Client Error";
    case int s when s >= 500 && s < 600 -> "Server Error";
    default -> "Unknown error";
};

System.out.println(statusMessage);

Neste exemplo, recuperamos um código de status HTTP e utilizamos um switch com when para verificar intervalos de valores e fornecer uma descrição apropriada.

Conclusão

A JEP 455 oferece uma melhoria significativa na linguagem Java, permitindo um uso mais expressivo e seguro de tipos primitivos em instanceof, switch e padrões de correspondência. Com a capacidade de usar padrões primitivos e guardas when, o código se torna mais claro e menos propenso a erros, especialmente em casos que envolvem validações e correspondências complexas.

A introdução desses recursos na linguagem Java demonstra o compromisso contínuo de tornar o desenvolvimento mais intuitivo e eficiente, mantendo a robustez e a segurança pelas quais o Java é conhecido. Com a JEP 455, os desenvolvedores têm mais ferramentas à disposição para escrever código limpo e eficiente, melhorando a experiência de desenvolvimento e a manutenção de aplicações.

Essas funcionalidades estarão disponíveis na versão 23 do Java, com previsão de lançamento no dia 17 de setembro de 2024. Fique atento para aproveitar essas melhorias em seus projetos Java!

// Compartilhe esse Post

💫
🔥 NOVO APP

Domine o Inglês em 30 dias!

Inteligência Artificial + Repetição Espaçada • Método cientificamente comprovado

✅ Grátis para começar 🚀 Resultados rápidos
×