Titulado “Creación de registros derivados”, La propuesta de OpenJDK Fue escrito por los equipos técnicos de Oracle. Su objetivo es optimizar el código derivando un nuevo registro de uno existente mediante la actualización de componentes. La propuesta señala que, dado que los registros son valores inmutables, los desarrolladores crean con frecuencia nuevos para incluir datos adicionales. Esta función entraría en Java en un estado de vista previa.

Los objetivos de la propuesta son proporcionar una forma concisa de crear instancias de registros derivadas de valores de registros existentes y agilizar la declaración de clases de registros eliminando la necesidad de proporcionar métodos "wither" explícitos. Los métodos "Wither" son similares a los métodos denominados "Setter", pero para clases inmutables.

Un perímetro bien definido

Según la propuesta, la ambición no es soportar una clase separada de métodos "wither" o proporcionar una construcción "with" al estilo Pascal que simplifique el acceso a expresiones complejas arbitrarias. El objetivo tampoco es proporcionar expresiones de creación de instancias derivadas para valores ordinarios de clases no registradas, aunque esto puede ser el tema de una futura JEP (JDK Enhancement Proposal).

Al explicar la motivación para crear registros derivados, la propuesta señala que la inmutabilidad de las clases de registros proporciona seguridad y previsibilidad, y agrega una serie de características que las hacen fáciles de usar. Sin embargo, los sistemas que los desarrolladores deben modelar tienen estado, y la evolución del estado modelado por las clases de registros puede ser engorrosa. La creación de derivados proporciona una forma sucinta de actualizar los componentes de las clases de registros cuando cambia el estado subyacente.

La creación de registros derivados formaría parte de la edición estándar de Java (SE). En la propuesta aún no se menciona ninguna versión específica de Java SE como objetivo para esta función. La versión actual de Java estándar es JDK 21, cuyo sucesor, JDK 22, se espera para marzo y cuyas funciones ya están congeladas. Se espera que JDK 23 esté disponible en septiembre.