record 의 생성자를 private 으로 만드는 것이 불가능한 이슈
2022. 8. 23. 15:19
Java
상황: record 의 static factory method 만들었다. 개인적인 기호는 new 보다 정적 팩토리 메소드를 사용하는 것을 선호한다. 따라서 타 클래스에서 new 를 통한 생성자를 직접 호출하는 대신, 정적 팩토리 메소드를 사용하도록 제한을 두기 위해 "생성자를 private" 으로 변경하고자 했다. 이미 정적 팩토리 메소드 내부에서는, 모든 불변 필드를 초기화하는 역할의 기본 생성자(이하 '주생성자' 라고 칭하겠음) 를 호출하는 방식을 취하도록 했다. record 타입에서는 컴파일러가 자동으로 public 주생성자를 만들어주기 때문에, 이를 명시적으로 다시 정의해서 private 으로 해주려고 했다. 그런데 컴파일 에러가 발생했다 - 좀 더 구체적인 상황을 적자면 -> 해당 레코드 타입은..