10 Truques Java Que Até Programadores Experientes Ignoram (Mas Não Deveriam!)

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.

Deixe um comentário