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.
| 🧠 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! 😉 |
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();
}
}
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
}
}
Ninja[nome=Naruto Uzumaki, idade=17, vila=Konohagakure]
Nome em maiúsculo: SASUKE UCHIHA
Idade do Kakashi: 30
| 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. |