Saya punya catatan dan ingin menambahkan konstruktor default untuk itu.
public record Record(int recordId) {
public Record {
}
}
Tapi itu menciptakan konstruktor dengan int
param.
public final class Record extends java.lang.Record {
private final int recordId;
public Record(int);
//other method
}
Bagaimana kita bisa menambahkan konstruktor default ke catatan?
java
java-14
java-record
Code_Mode
sumber
sumber
Jawaban:
Untuk memecah rambut, Anda tidak pernah dapat mendefinisikan konstruktor default, karena konstruktor default dihasilkan oleh kompilator ketika tidak ada konstruktor yang ditentukan, sehingga konstruktor yang didefinisikan adalah dengan definisi bukan yang default.
Jika Anda ingin catatan memiliki konstruktor no-arg, catatan memang memungkinkan menambahkan konstruktor tambahan atau metode pabrik , selama "konstruktor kanonik" yang mengambil semua bidang rekaman sebagai argumen dipanggil.
sumber
Konstruktor eksplisit
Dalam kasus Anda, Anda dapat secara eksplisit menentukan konstruktor tanpa argumen dengan pendelegasian kepada konstruktor kanonik dengan nilai default jika Anda mau dan ini dapat dilakukan sebagai -
Singkatnya, setiap konstruktor non-kanonik harus mendelegasikan kepada satu, dan itu harus berlaku untuk sifat pembawa data dari representasi ini.
Konstruktor Ringkas
Di sisi lain, perhatikan bahwa representasi yang Anda gunakan dalam kode Anda.
disebut sebagai "konstruktor ringkas" yang mewakili konstruktor yang menerima semua argumen dan itu juga dapat digunakan untuk memvalidasi data yang disediakan sebagai atribut catatan. Konstruktor kompak adalah cara alternatif untuk mendeklarasikan konstruktor kanonik.
sumber