Novidades do JDK 14: Recursos Essenciais e Detalhados

JEP 305: Pattern Matching com instanceof

O JDK 14 introduz uma melhoria significativa no operador instanceof, permitindo o uso de padrões de correspondência. Isso elimina a necessidade de verificação manual seguida de conversão forçada, tornando o código mais claro e seguro.

public void processObject(Object obj) {
    if (obj instanceof String text) {
        System.out.println("Tamanho: " + text.length());
    }
}

Neste exemplo, se obj for uma instância de String, ele é automaticamente convertido e atribuído à variável text. A variável text só está disponível dentro do bloco if, evitando erros de escopo.

Revisão da Implementação de equals()

A nova sintaxe simplifica a implementação de equals:

@Override
public boolean equals(Object other) {
    return (other instanceof Student s) && Objects.equals(this.name, s.name);
}

JEP 361: Expressões Switch (Versão Estável)

Com o JDK 14, as expressões switch são oficialmente estabilizadas. Elas permitem retornar valores diretamente, eliminando a necessidade de break.

String grade = switch (score) {
    case 'A', 'B' -> "Excelente";
    case 'C' -> "Regular";
    case 'D', 'E' -> "Insuficiente";
    default -> "Inválido";
};

Uso do yield em blocos

Quando o corpo do caso é um bloco, use yield para retoranr um valor:

String result = switch (level) {
    case 1, 2 -> "Baixo";
    case 3 -> "Médio";
    case 4, 5 -> "Alto";
    default -> {
        if (level < 0 || level > 5) {
            yield "Nível inválido";
        } else {
            yield "Desconhecido";
        }
    }
};

JEP 368: Text Blocks (Segundo Preview)

Text blocks permitem escrever strings multilinha com formatação limpa, sem necessidade de concatenação ou escape explícito.

String html = """
<html>
    <body>
        <p>Olá, mundo!</p>
    </body>
</html>
""";

Caracteres de espaço em branco iniciais são removidos automaticamente com base na linha mais curta. Use \ para evitar quebrar linhas e \s para incluir espaços visíveis.

String config = """
    host=localhost
    port=8080
    timeout=30\s
""";

Exemplos Práticos

  • SQL: Consultas longas agorra são legíveis como blocos de texto.
  • JSON: Estruturas complexas podem ser escritas diretamente.
  • Scripts JavaScript: Blocos de execução ficam muito mais naturais.

Tags: Java 14 pattern matching Switch Expressions text blocks JDK enhancements

Publicado em 10-1 23:10