DEV Community

Thiago Emidio
Thiago Emidio

Posted on • Edited 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.

*Conclusão: *
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.

Retry later

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

Retry later