O Record, introduzido no Java 14, é como um jutsu de economia de chakra:

ele permite criar classes de dados limpas, imutáveis e sem boilerplate, evitando aquele monte de getters, setters, equals(), hashCode() e toString() que costumam poluir POJOs tradicionais.

Ele pertence ao pacote java.lang, ou seja, está disponível automaticamente.


🧩 Principais Conceitos sobre Record

🧠 Conceito Explicação
🔒 Imutabilidade Todos os campos são final: depois de criado, nada muda.
✂️ Menos código O compilador gera automaticamente: equals, hashCode, toString e getters.
Performance interna otimizada O Java sabe que record é apenas dado → otimiza memória e operações.
🎯 Usado para transportar dados Ideal para DTOs, respostas de API, configurações… e até ninjas! 😉

🥷 Exemplo

Perfeito para armazenar apenas dados do ninja, sem lógica pesada.

package records;

// Record Ninja: imutável, simples e direto
public record Ninja(String nome, int idade, String vila) {

    // Método personalizado: retorna nome em caixa alta
    public String nomeEmMaiusculo() {
        return nome.toUpperCase();
    }
}


🧪 Classe de Teste

public class TesteRecord {
    public static void main(String[] args) {
        Ninja naruto = new Ninja("Naruto Uzumaki", 17, "Konohagakure");
        Ninja sasuke = new Ninja("Sasuke Uchiha", 17, "Konohagakure");
        Ninja kakashi = new Ninja("Kakashi Hatake", 30, "Konohagakure");

        System.out.println(naruto); // Usa toString() gerado automaticamente
        System.out.println("Nome em maiúsculo: " + sasuke.nomeEmMaiusculo());
        System.out.println("Idade do Kakashi: " + kakashi.idade()); // Getter automático
    }
}

🔍 Saída típica:

Ninja[nome=Naruto Uzumaki, idade=17, vila=Konohagakure]
Nome em maiúsculo: SASUKE UCHIHA
Idade do Kakashi: 30


💡 Por que usar Record?

Benefício Por quê isso é bom?
🔒 Imutabilidade garantida Evita mudanças acidentais e melhora segurança.
✂️ Zero boilerplate Nada de criar manualmente getters ou toString().
Eficiência interna JVM otimiza records para serem leves e rápidos.
📦 Perfeitos para DTOs Representam bem respostas de API e modelos de dados simples.
🌟 Legibilidade Código mais limpo, claro e fácil de manter.

📚 Links úteis para aprofundar