Introdução
Liberado no Java 14 como preview, mais especificamente na JEP 395, Record Class é uma alternativa para se trabalhar com Classes em Java.
Record Class foi uma sacada bem interessante desenhado para eliminar a verbosidade de quando se precisa criar uma classe e seus componentes, como por exemplo:
Construtores canônicos
Métodos de acesso público
Implementar os métodos equals e hashCode
Implementar o método toString
Usando Record Classes não é mais necessário declarar os itens acima, ajudando o desenvolvedor a ser mais focado em outras frentes. Vamos entender melhor na prática.
Vamos criar uma classe Java chamada User e adicionar alguns campos e métodos.
Perceba que para uma simples classe com 4 campos, criamos um construtor, métodos de acesso público, implementamos os métodos equals e hashCode e por fim, o método toString. Funciona bem, porém poderíamos evitar a complexidade e criar um código menos verboso. Nesse caso, podemos utilizar Record Classes no lugar da classe User acima.
User Record Class
É notável a diferença entre Record e uma Classe Java tradicional. Perceba que não foi necessário declarar os campos, criar os métodos de acessos ou implementar nenhum outro método.
Em uma Record Class quando criada, implicitamente os métodos de acesso público são criados, as implementações dos métodos equals, hashCode e toString também são criados de forma automática sendo não necessário implementa-los de forma explícita. E por fim, os campos de referências ou componentes, são criados como private final com o mesmos nomes.
Saída
Desvantagens
Record Class se comporta como uma classe Java comum, mas a diferença é que não se pode trabalhar com herança, ou seja, não se pode estender (extends) outra classe, somente implementar uma ou mais interfaces.
Outro ponto é que não é possível criar variáveis de instâncias não estáticas (static);
Conclusão final
Record Classes é uma ótima abordagem para quem procura um código menos verboso ou que precisa de agilidade em implementar modelos. Apesar da limitação de não poder estender outras Record Classes, é um limitador que não prejudica o seu uso em geral.
Espero que tenha curtido!
Comments