Definire il costruttore predefinito per il record


20

Ho un record e voglio aggiungere il costruttore predefinito ad esso.

public record Record(int recordId) {
   public Record {

   }
}

Ma ha creato il costruttore con intparam.

public final class Record extends java.lang.Record {
    private final int recordId;
    public Record(int);
    //other method
}

Come possiamo aggiungere un costruttore predefinito a un record?


quello che hai definito è un costruttore compatto che ottiene la sua dichiarazione derivata dall'intestazione del record. Esiste una corrispondenza 1-1 nel nome, nel tipo e nell'arità variabile tra un componente record e il corrispondente parametro formale nel costruttore compatto, lo stesso vale per il costruttore canonico. Un record può avere solo un costruttore canonico. Se dichiarato il costruttore compatto è il costruttore canonico
Vicente Romero

Risposte:


18

Per dividere i capelli, non è mai possibile definire un costruttore predefinito, poiché un compilatore predefinito viene generato dal compilatore quando non ci sono costruttori definiti, quindi qualsiasi costruttore definito non è per definizione predefinito.

Se si desidera che un record abbia un costruttore no-arg, i record consentono l'aggiunta di ulteriori costruttori o metodi di fabbrica , purché il "costruttore canonico" che prende tutti i campi del record quando vengono chiamati argomenti.

public record Record(int recordId) {
   public Record() {
      this(0); 
   }
}

17

Costruttore esplicito

Nel tuo caso, puoi specificare esplicitamente un costruttore senza argomento con la delega al costruttore canonico con un valore predefinito se lo desideri e questo può essere fatto come -

public Record(){
    this(Integer.MIN_VALUE);
}

In breve, qualsiasi costruttore non canonico dovrebbe delegare a uno, e ciò dovrebbe valere per la natura portatrice di dati di queste rappresentazioni.

Costruttore compatto

D'altra parte, nota che la rappresentazione che hai usato nel tuo codice.

public Record {}

viene definito "costruttore compatto" che rappresenta un costruttore che accetta tutti gli argomenti e che può essere utilizzato anche per convalidare i dati forniti come attributi del record. Un costruttore compatto è un modo alternativo di dichiarare il costruttore canonico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.