Zdefiniuj domyślny konstruktor rekordu

20

Mam rekord i chcę dodać do niego domyślny konstruktor.

public record Record(int recordId) {
   public Record{

   }
}

Ale stworzył konstruktor z int param.

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

Jak możemy dodać domyślny konstruktor do rekordu?

Code_Mode
źródło
to co zdefiniowałeś to kompaktowy konstruktor, który otrzymuje swoją deklarację na podstawie nagłówka rekordu. Istnieje zgodność 1-1 w nazwie, typie i zmiennej arity między składnikiem rekordu a odpowiednim parametrem formalnym w kompaktowym konstruktorze, to samo dotyczy konstruktora kanonicznego. Rekord może mieć tylko konstruktor kanoniczny. Jeśli zadeklarowany, kompaktowy konstruktor jest konstruktorem kanonicznym
Vicente Romero

Odpowiedzi:

18

Aby podzielić włosy, nigdy nie można zdefiniować domyślnego konstruktora, ponieważ domyślny konstruktor jest generowany przez kompilator, gdy nie ma zdefiniowanych konstruktorów, dlatego każdy zdefiniowany konstruktor z definicji nie jest domyślny.

Jeśli chcesz, aby rekord zawierał konstruktor bez argumentu, rekordy umożliwiają dodawanie dodatkowych konstruktorów lub metod fabrycznych , o ile wywoływany jest „konstruktor kanoniczny”, który przyjmuje wszystkie pola rekordu jako argumenty.

public record Record(int recordId) {
   public Record() {
      this(0); 
   }
}
ThisIsNoZaku
źródło
17

Jawny konstruktor

W twoim przypadku możesz jawnie określić konstruktor bez argumentów wraz z delegacją do konstruktora kanonicznego z wartością domyślną, jeśli chcesz, i można to zrobić jako -

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

Krótko mówiąc, każdy niekanoniczny konstruktor powinien przekazać to zadanie jednemu, a to powinno być zgodne z charakterem tych reprezentacji, które zawierają dane.

Kompaktowy konstruktor

Z drugiej strony zauważ, że reprezentacja została użyta w kodzie.

public Record {}

jest określany jako „kompaktowy konstruktor”, który reprezentuje konstruktor akceptujący wszystkie argumenty i który można również wykorzystać do sprawdzania poprawności danych dostarczonych jako atrybuty rekordu. Kompaktowy konstruktor jest alternatywnym sposobem deklarowania konstruktora kanonicznego.

Naman
źródło