레코드가 있고 기본 생성자를 추가하고 싶습니다.
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
}
기본 생성자를 레코드에 어떻게 추가 할 수 있습니까?
답변
머리카락을 분할하려면 기본 생성자를 정의 할 수 없습니다. 생성자가 정의되지 않은 경우 기본 생성자가 컴파일러에 의해 생성되므로 정의 된 생성자는 기본적으로 기본 생성자가 아닙니다.
레코드에 인수가없는 생성자 가 포함되도록 하려면 모든 레코드 필드를 인수로 사용하는 “표준 생성자”가 호출되는 한 레코드는 추가 생성자 또는 팩토리 메소드를 추가 할 수 있습니다.
public record Record(int recordId) {
public Record() {
this(0);
}
}
답변
명시 적 생성자
귀하의 경우 원하는 경우 기본값이있는 표준 생성자에 위임을 사용하여 인수가없는 생성자를 명시 적으로 지정할 수 있으며 다음과 같이 수행 할 수 있습니다-
public Record(){
this(Integer.MIN_VALUE);
}
요컨대, 비정규 생성자는 생성자에게 위임해야하며, 이는 이러한 표현의 데이터 전달 특성에 맞아야합니다.
소형 생성자
반면에 코드에서 사용한 표현에 유의하십시오.
public Record {}
모든 인수를 허용하는 생성자를 나타내는 “컴팩트 생성자”라고하며 레코드의 속성으로 제공된 데이터의 유효성을 검사하는 데 사용될 수도 있습니다. 컴팩트 생성자는 표준 생성자를 선언하는 다른 방법입니다.