Feature Java: Records
Nos últimos anos, o Java tem se esforçado para oferecer recursos que simplifiquem o desenvolvimento, mantendo a eficiência e a robustez. Uma dessas adições recentes é o Java Records, introduzido no Java 14. Java Records é uma nova maneira concisa de declarar classes de dados imutáveis.
O que são Java Records?
Java Records são uma maneira concisa de declarar classes de dados imutáveis. Eles se destinam a ser uma maneira simples e direta de criar classes de dados semelhantes a registros em outras linguagens de programação. Os records foram introduzidos como uma 'preview feature' no Java 14 e promovidos a um recurso permanente no Java 16. Além disso, melhorias nas padronizações do Java Record foram introduzidas como 'preview feature' no Java 19 e Java 20, e promovidas a recurso definitivo no Java 21.
Como usar Java Records?
Usar records em Java é bastante simples. Em vez de escrever longas classes com getters, setters, equals, hashCode e toString, você pode definir um registro em uma única linha. Aqui está um exemplo:
public record Post(String titulo, String conteudo, LocalDateTime dataDePostagem) {}
E pronto! Você tem uma classe de dados imutável com três campos: titulo
, conteudo
e dataDePostagem
. O Java automaticamente fornece um construtor, métodos getters para os campos e também os métodos equals()
, hashCode()
e toString()
.
Benefícios de usar Java Records
Concisão
A principal vantagem dos records é a concisão. Em comparação com as classes Java tradicionais, os records exigem muito menos digitação. Em uma única linha, você pode declarar uma classe de dados completa.
Imutabilidade
Os records são imutáveis por padrão. Isso significa que, depois que um record é criado, ele não pode ser alterado. Isso ajuda a evitar efeitos colaterais indesejados e a tornar seu código mais previsível e seguro.
Métodos padrão
Os records fornecem automaticamente métodos equals()
, hashCode()
e toString()
. Isso economiza tempo e reduz erros, eliminando a necessidade de escrever esses métodos manualmente.
Declarativo
Os records são uma maneira declarativa de modelar dados. Eles permitem que você se concentre no que os dados são, em vez de como eles devem ser armazenados e acessados.
Exemplo de Uso
Feature disponível no Java 14
Com base no record criado anteriormente, segue exemplo de como instânciar um novo objeto.
public class Exemplo1 {
public static void main(String[] args) {
Post post = new Post("Java Records 14", "Contéudo do post sobre Java Records", LocalDateTime.now());
System.out.println(post.titulo()); // Java Records
}
}
Feature disponível no Java 19
Verifica se a variável post
é uma instância de Post
para então acessar os seus atributos por meio da váriavel p
.
public class Exemplo2 {
public static void main(String[] args) {
Post post = new Post("Java Records 21", "Contéudo do post sobre Java Records", LocalDateTime.now());
if (post instanceof Post p) {
System.out.println("Titulo: " + p.titulo());
System.out.println("Descrição: " + p.descricao());
System.out.println("Data: " + p.dataDePostagem());
}
}
}
Conclusão
Em resumo, os Java Records representam uma evolução notável no desenvolvimento Java, proporcionando uma abordagem mais concisa e declarativa para modelagem de dados. Ao eliminar a necessidade de escrever manualmente getters
, setters
, equals
, hashCode
e toString
, os records simplificam significativamente o processo de criação de classes de dados imutáveis. Com os Java Records, o desenvolvimento em Java se torna mais eficiente e direto, oferecendo uma maneira mais intuitiva e simplificada de lidar com dados.