Eu tenho um registro e quero adicionar o construtor padrão a ele.
public record Record(int recordId) {
public Record {
}
}
Mas criou o construtor com int
param.
public final class Record extends java.lang.Record {
private final int recordId;
public Record(int);
//other method
}
Como podemos adicionar um construtor padrão a um registro?
java
java-14
java-record
Code_Mode
fonte
fonte
Respostas:
Para dividir cabelos, você nunca pode definir um construtor padrão, porque um construtor padrão é gerado pelo compilador quando não há construtores definidos; portanto, qualquer construtor definido é, por definição, não um padrão.
Se você deseja que um registro tenha um construtor sem argumento, os registros permitem adicionar construtores extras ou métodos de fábrica , desde que o "construtor canônico" que utilize todos os campos de registro como argumentos seja chamado.
fonte
Construtor explícito
No seu caso, você pode especificar explicitamente um construtor sem argumento com a delegação para o construtor canônico com um valor padrão, se desejar, e isso pode ser feito como -
Em resumo, qualquer construtor não canônico deve delegar para um, e isso deve ser verdadeiro para a natureza de transporte de dados dessas representações.
Construtor compacto
Por outro lado, observe que a representação que você usou no seu código.
é denominado como um "construtor compacto", que representa um construtor que aceita todos os argumentos e que também pode ser usado para validar os dados fornecidos como atributos do registro. Um construtor compacto é uma maneira alternativa de declarar o construtor canônico.
fonte