Визначте конструктор за замовчуванням для запису


20

У мене є запис і хочу додати до нього конструктор за замовчуванням.

public record Record(int recordId) {
   public Record{

   }
}

Але він створив конструктор з int param.

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

Як ми можемо додати конструктор за замовчуванням до запису?


що ви визначили, це компактний конструктор, який отримує свою декларацію, отриману з заголовка запису. Між записуючим компонентом та відповідним формальним параметром у компактному конструкторі є 1-1 збіг 1-1 у відповідності до імені, типу та змінної сутності, те саме стосується канонічного конструктора. Запис може мати лише канонічний конструктор. Якщо оголошено компактним конструктором є канонічний конструктор
Вісенте Ромеро

Відповіді:


18

Щоб розділити волоски, ви ніколи не можете визначити конструктор за замовчуванням, оскільки конструктор за замовчуванням генерується компілятором, коли не визначені конструктори, тому будь-який визначений конструктор за визначенням не є типовим.

Якщо ви хочете, щоб запис мав конструктор без аргументів, записи дозволяють додавати додаткові конструктори або фабричні методи , доки не викликається "канонічний конструктор", який приймає всі поля запису як аргументи.

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

17

Явний конструктор

У вашому випадку ви можете явно вказати конструктор без аргументів з делегуванням до канонічного конструктора зі значенням за замовчуванням, якщо ви хочете, і це можна зробити так:

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

Коротше кажучи, будь-який неканонічний конструктор повинен делегувати один, і це має бути справедливим для даних даних представлень.

Компактний конструктор

З іншого боку, зверніть увагу, що представництво, яке ви використовували у своєму коді.

public Record {}

називається "компактним конструктором", який представляє конструктор, що приймає всі аргументи, і який також може бути використаний для перевірки даних, наданих як атрибутів запису. Компактний конструктор - це альтернативний спосіб декларування канонічного конструктора.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.