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?
java
java-14
java-record
Code_Mode
źródło
źródło
Odpowiedzi:
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.
źródło
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 -
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.
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.
źródło