DEV Community

Thiago Emidio
Thiago Emidio

Posted on

Java 17 - Records

Image description

Hoje vamos falar da feature Record. :)

A funcionalidade de record no Java 17 é uma nova adição à linguagem que simplifica a criação de classes de dados imutáveis. Ela combina várias características, como geração automática de campos, geração de construtores e implementações padrão de métodos comuns como equals(), hashCode() e toString(). Records são declarados usando a palavra-chave "record", seguida pelo nome e uma lista de componentes.

Abaixo está um exemplo de declaração simples de um record:

record Pessoa(String nome, int idade) {
 // Corpo do record (opcional)
}
Enter fullscreen mode Exit fullscreen mode

No exemplo acima, declaramos um record chamado "Pessoa" com dois componentes: um campo de string "nome" e um campo de inteiro "idade". O record gera automaticamente um construtor, getters para cada componente e implementações padrão de equals(), hashCode() e toString().
Você pode criar uma instância de um record usando o construtor como qualquer outra classe:

Pessoa pessoa = new Pessoa("Thiago", 35);
Enter fullscreen mode Exit fullscreen mode

Records são imutáveis por padrão, o que significa que seus campos não podem ser modificados depois de inicializados. No entanto, você ainda pode atualizar uma instância de record criando um novo record com valores atualizados usando a palavra-chave "with":

Pessoa pessoaAtualizada = pessoa.withIdade(31);
Enter fullscreen mode Exit fullscreen mode

Nesse exemplo, uma nova instância de record chamada "pessoaAtualizada" é criada com o mesmo nome do record original, mas com a idade atualizada para 31. O método "withIdade()" é gerado automaticamente pelo record.
Records também podem ser usados em declarações de switch:

public String obterDescricaoPessoa(Pessoa pessoa) {
 return switch (pessoa.idade()) {
 case 0 -> "Recém-nascido";
 case 18 -> "Adulto";
 default -> "Desconhecido";
 };
}
Enter fullscreen mode Exit fullscreen mode

Nesse exemplo, o método "obterDescricaoPessoa" recebe um record de pessoa como parâmetro e usa uma declaração de switch para retornar uma descrição com base na idade.
No geral, a funcionalidade de record no Java 17 oferece uma forma conveniente de criar classes de dados imutáveis e com um código de fácil manutenção. Ela melhora a legibilidade do código e reduz o esforço necessário para criar e usar tais classes.

Top comments (0)