레코드의 기본 생성자 정의


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로 일치하며 표준 생성자에도 동일하게 적용됩니다. 레코드는 표준 생성자 만 가질 수 있습니다. 컴팩트 생성자가 표준 생성자 인 경우
Vicente Romero

답변:


18

머리카락을 분할하려면 기본 생성자를 정의 할 수 없습니다. 생성자가 정의되지 않은 경우 기본 생성자가 컴파일러에 의해 생성되므로 정의 된 생성자는 기본적으로 기본 생성자가 아닙니다.

레코드에 인수가없는 생성자 가 포함되도록 하려면 모든 레코드 필드를 인수로 사용하는 "표준 생성자"가 호출되는 한 레코드는 추가 생성자 또는 팩토리 메소드를 추가 할 수 있습니다.

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

17

명시 적 생성자

귀하의 경우 원하는 경우 기본값이있는 표준 생성자에 위임을 사용하여 인수가없는 생성자를 명시 적으로 지정할 수 있으며 다음과 같이 수행 할 수 있습니다-

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

요컨대, 비정규 생성자는 생성자에게 위임해야하며, 이는 이러한 표현의 데이터 전달 특성에 맞아야합니다.

소형 생성자

반면에 코드에서 사용한 표현에 유의하십시오.

public Record {}

모든 인수를 허용하는 생성자를 나타내는 "컴팩트 생성자"라고하며 레코드의 속성으로 제공된 데이터의 유효성을 검사하는 데 사용될 수도 있습니다. 컴팩트 생성자는 표준 생성자를 선언하는 다른 방법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.