1. Uso inteligente do Optional
Trabalhar com Optional
é uma excelente maneira de evitar NullPointerExceptions
. Muitos ainda o utilizam de forma superficial, mas ele pode ser poderoso com métodos como orElseGet()
ou ifPresentOrElse()
.
Optional.ofNullable(valor)
.ifPresentOrElse(
v -> System.out.println("Valor: " + v),
() -> System.out.println("Valor ausente")
);
Quando usar: Em APIs públicas ou quando se deseja deixar claro que o valor pode estar ausente.
2. A palavra-chave var
Desde o Java 10, é possível usar var
para inferência de tipos locais. Ajuda a deixar o código limpo, mas deve ser usada com cautela.
var lista = List.of("Java", "Kotlin", "Scala");
Evite: quando o tipo inferido não for claro, dificultando a leitura.
3. Classes Record
Introduzidas no Java 14, record
elimina boilerplate de classes imutáveis com atributos e construtores automáticos.
public record Pessoa(String nome, int idade) { }
Ideal para modelos de dados e DTOs.
4. Pattern Matching com instanceof
No Java 16+, o instanceof
permite declarar e castar no mesmo passo:
if (obj instanceof String s) {
System.out.println(s.toUpperCase());
}
Reduz código redundante e melhora a legibilidade.
5. Sealed Classes
Controla quais classes podem estender uma superclasse. Introduzidas no Java 17.
public sealed class Forma permits Circulo, Quadrado { }
Melhora segurança e previsibilidade da hierarquia.
6. Switch Expressions
No Java 14+, o switch
retorna valores:
int resultado = switch (dia) {
case "SEGUNDA", "TERÇA" -> 1;
default -> 0;
};
Mais limpo e menos propenso a erros.
7. Text Blocks
Multi-linhas de texto com aspas triplas (Java 15+):
String json = """
{
"nome": "João",
"idade": 30
}
""";
Perfeito para JSON, XML ou SQL.
8. Métodos static
em interfaces
Desde o Java 8, é possível criar métodos estáticos em interfaces. Útil para utilitários relacionados à interface.
interface Util {
static int dobro(int x) {
return x * 2;
}
}
9. Uso estratégico de Collectors
Transforme streams com facilidade usando coletores como groupingBy()
, partitioningBy()
e joining()
.
Map<Boolean, List> paresEImpares =
numeros.stream().collect(Collectors.partitioningBy(n -> n % 2 == 0));
10. Novidades do Java 21
Incluem Scoped Values, melhorias em Virtual Threads
e novos aprimoramentos em Pattern Matching
e Record Patterns
.
Esses recursos aumentam a produtividade e escalabilidade, especialmente em aplicações paralelas.
🚀 Compartilhe sua experiência com Java!
Qual desses truques você já usa no dia a dia? Faltou algum que considera essencial?
Deixe nos comentários e compartilhe com seu squad!
Aproveite para conhecer TRUQUES AVANÇADOS EM JAVA aplicados em projetos reais e veja como alavancar sua produtividade!
Perguntas Frequentes (FAQ)
Quais são os recursos mais subestimados do Java?
Optional, var, sealed classes e switch expressions estão entre os mais ignorados por muitos desenvolvedores experientes.
Vale a pena estudar o Java 21?
Sim! Ele traz melhorias significativas como Virtual Threads, Pattern Matching avançado e outras features que tornam o código mais limpo e performático.
É seguro usar var no lugar do tipo explícito?
É seguro, mas deve ser usado com cautela, sempre que o tipo for evidente para evitar perda de legibilidade.
Como usar Optional corretamente?
Evite usá-lo em campos de entidade e prefira em retornos de métodos. Use ifPresent
, map
e orElse
para compor lógica limpa.