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.