У меня есть запись, и я хочу добавить конструктор по умолчанию к ней.
public record Record(int recordId) {
public Record {
}
}
Но он создал конструктор с int
параметром.
public final class Record extends java.lang.Record {
private final int recordId;
public Record(int);
//other method
}
Как мы можем добавить конструктор по умолчанию к записи?
java
java-14
java-record
Code_Mode
источник
источник
Ответы:
Чтобы разделить волосы, вы никогда не сможете определить конструктор по умолчанию, потому что конструктор по умолчанию генерируется компилятором, когда конструкторы не определены, поэтому любой определенный конструктор по определению не является конструктором по умолчанию.
Если вы хотите, чтобы запись имела конструктор без аргументов, записи позволяют добавлять дополнительные конструкторы или фабричные методы , если вызывается «канонический конструктор», который принимает все поля записи в качестве аргументов.
источник
Явный конструктор
В вашем случае вы можете явно указать конструктор без аргументов с делегированием каноническому конструктору со значением по умолчанию, если вы хотите, и это можно сделать как -
Короче говоря, любой неканонический конструктор должен делегировать один, и это должно выполняться для характера переноса данных этих представлений.
Компактный Конструктор
С другой стороны, обратите внимание, что представление вы использовали в своем коде.
называется «компактным конструктором», который представляет конструктор, принимающий все аргументы, и который также может использоваться для проверки данных, предоставленных в качестве атрибутов записи. Компактный конструктор - это альтернативный способ объявления канонического конструктора.
источник