Os desenvolvedores Java ganhariam uma maneira mais fácil de criar registros e um código mais simplificado para declarar classes de registros, por meio da criação de registros derivados, um recurso de linguagem de visualização que está sendo considerado pela comunidade OpenJDK.
A criação de registros derivados permitiria aos desenvolvedores criar novos registros a partir de registros existentes, especificando apenas os componentes que são diferentes. Os objetivos da proposta incluem fornecer um meio conciso para criar novos valores de registro a partir dos existentes e simplificar a declaração de classes de registro, eliminando a necessidade de fornecer métodos explícitos de wither, que são o análogo imutável dos métodos setter.
Subjacente à proposta está a noção de que a imutabilidade é uma técnica poderosa para criar código seguro, confiável e fácil de raciocinar. Escrever classes imutáveis em Java tradicionalmente era um exercício tedioso que envolvia muitos clichês, mas as classes de registro introduzidas no JDK 16 facilitam a declaração de classes imutáveis centradas em dados.
A imutabilidade das classes de registro garante previsibilidade e segurança e permite recursos que as tornam fáceis de usar, incluindo construtores canônicos, métodos acessadores e métodos Objectcode bem definidos. No entanto, os sistemas que os desenvolvedores precisam modelar ainda possuem estado, e pode ser complicado evoluir o estado modelado por classes de registro, observa a proposta. Uma maneira melhor de derivar novos valores de registro a partir de valores de registros antigos seria permitir que os desenvolvedores se concentrassem na transformação de componentes e fazer com que o compilador Java lidasse com a desconstrução e instanciação de valores de registro automaticamente.
Criada no final de novembro de 2023 e atualizada em 28 de fevereiro, a proposta de criação de registros derivados se tornaria parte do Java Standard Edition. Nenhuma versão específica foi nomeada como destinatária. Criar expressões de criação derivadas para valores comuns e não registrados não é um objetivo da proposta atual, mas pode ser objeto de uma futura proposta de aprimoramento do JDK.