Isaque Ferreira
@isaquescheidegger
RECORDS
Isaque Ferreira
@isaquescheidegger
O que são RECORDS?
Os Records são uma nova forma de declarar
classes no Java.
Elas são imutáveis por padrão, o que significa
que não podemos alterar seus valores após a
criação do objeto
Eles são bastante úteis para representar
dados, como, por exemplo, uma entidade de
banco de dados.
Isaque Ferreira
@isaquescheidegger
Sem RECORD:
public class Produto {
{
private final int id;
id;
private final String nome;
nome;
private final double preco;
preco;
Construtor
// Construtor
public Produto(int id, String nome, double preco) {
Produto(int {
this.id = id;
this.id id;
this.nome = nome;
this.nome nome;
this.preco = preco;
this.preco preco;
Getters
// Getters
public int getId() { return id; }
public String getNome() { return nome; }
public double getPreco() { return preco; }
toString
// toString
@Override
@Override
public String toString() {
return "Produto{id="
"Produto{id=" +
+ id
id +
+ ",
", nome='"
nome='" +
+ nome
nome +
+ "',
"', preco="
preco=" +
+
preco +
preco + "}"
"}";
// equals
// equals e e hashCode
hashCode
@Override
@Override
public boolean equals
equals(Object
(Object o) {
if (this == o) return true
(this true;
if (o == null || getClass() != o.getClass()) return false
false;
Produto produto = (Produto) o;
o;
return id == produto.id && Double.compare(produto.preco, preco)
== 0 && nome.equals(produto.nome);
nome.equals(produto.nome);
@Override
@Override
public int hashCode
hashCode()
() {
return Objects.hash(id, nome, preco);
preco);
Isaque Ferreira
@isaquescheidegger
Com RECORD:
public record Produto(int id, String nome, double preco) {}
Isaque Ferreira
@isaquescheidegger
Sem RECORD:
Declaração dos campos → Construtor → Getters →
Métodos equals, hashCode, toString.
Com RECORD:
Apenas uma declaração → Pronto!
Isaque Ferreira
@isaquescheidegger
Quando usar
Objetos que carregam apenas dados,
como DTOs
Configurações imutáveis ou
mapeamentos de tabelas simples
Quando NÃO usar
Classes que precisam de lógica
adicional além de carregar dados
Objetos que devem ser mutáveis.