A palavra-chave record foi introduzida no Java 14 como uma prévia e se tornou uma funcionalidade estável no Java 16. Ela fornece uma forma concisa de criar classes que são usadas principalmente para armazenar dados imutáveis.
O que é um record?
- record é uma nova forma de declaração de classe que simplifica a criação de classes de dados imutáveis.
- Um record automaticamente fornece implementações de métodos importantes, como equals(), hashCode(), e toString(), baseados nos campos do record.
Sintaxe Básica:
public record NomeDoRecord(TipoCampo1 campo1, TipoCampo2 campo2) {
// Corpo do record
}
Exemplo:
public record Pessoa(String nome, int idade) {
}
Nesse exemplo:
- Pessoa é um record com dois campos: nome e idade.
- record automaticamente cria um construtor que recebe esses dois parâmetros e inicializa os campos.
Posts recentes
Principais Características:
- Imutabilidade:
- Os campos de um record são final e não podem ser modificados depois de definidos.
- Construtor:
- Um record fornece automaticamente um construtor que inicializa todos os campos.
- Métodos:
- equals() e hashCode() são gerados com base nos campos do record.
- toString() é gerado para representar o record de forma legível.
- Desconstrução:
- É possível acessar os campos de um record diretamente por métodos gerados automaticamente.
- with:
- Permite criar uma cópia do record com um campo modificado.
Exemplos Práticos:
1.Criação e Uso do Record:
public record Pessoa(String nome, int idade) {
}
public class Main {
public static void main(String[] args) {
Pessoa pessoa = new Pessoa("João", 30);
System.out.println(pessoa.nome()); // Saída: João
System.out.println(pessoa.idade()); // Saída: 30
}
}
2.Desconstrução:
public record Pessoa(String nome, int idade) {
}
public class Main {
public static void main(String[] args) {
Pessoa pessoa = new Pessoa("Maria", 25);
var (nome, idade) = pessoa; // Desconstrução
System.out.println(nome); // Saída: Maria
System.out.println(idade); // Saída: 25
}
}
3.Uso do Método with:
public record Pessoa(String nome, int idade) {
}
public class Main {
public static void main(String[] args) {
Pessoa pessoa1 = new Pessoa("Ana", 40);
Pessoa pessoa2 = pessoa1.withIdade(41); // Cria uma nova instância com idade modificada
System.out.println(pessoa1); // Saída: Pessoa[nome=Ana, idade=40]
System.out.println(pessoa2); // Saída: Pessoa[nome=Ana, idade=41]
}
}
Uso e Benefícios:
- record é ideal para casos onde você precisa de classes simples para armazenar dados sem a necessidade de implementar manualmente métodos comuns como equals() e hashCode().
- record promove a clareza e a redução de código boilerplate, tornando o código mais limpo e legível.
O uso de record pode melhorar a manutenção e a compreensão do código ao fornecer uma maneira direta de criar classes de dados imutáveis com um conjunto padrão de comportamentos.