Tengo un registro y quiero agregarle el constructor predeterminado.
public record Record(int recordId) {
public Record {
}
}
Pero creó un constructor con int
param.
public final class Record extends java.lang.Record {
private final int recordId;
public Record(int);
//other method
}
¿Cómo podemos agregar un constructor predeterminado a un registro?
java
java-14
java-record
Code_Mode
fuente
fuente
Respuestas:
Para dividir los pelos, nunca se puede definir un constructor predeterminado, porque el compilador genera un constructor predeterminado cuando no hay constructores definidos, por lo que cualquier constructor definido no es, por definición, uno predeterminado.
Si desea que un registro tenga un constructor sin argumentos, los registros permiten agregar constructores adicionales o métodos de fábrica , siempre que se llame al "constructor canónico" que toma todos los campos de registro como argumentos.
fuente
Constructor explícito
En su caso, puede especificar explícitamente un constructor sin argumentos con la delegación al constructor canónico con un valor predeterminado si lo desea y esto se puede hacer como:
En resumen, cualquier constructor no canónico debería delegar en uno, y eso debería ser cierto para la naturaleza portadora de datos de estas representaciones.
Constructor compacto
Por otro lado, tenga en cuenta que la representación que utilizó en su código.
se denomina como un "constructor compacto" que representa un constructor que acepta todos los argumentos y que también puede usarse para validar los datos proporcionados como atributos del registro. Un constructor compacto es una forma alternativa de declarar el constructor canónico.
fuente