compact constructor 질문이 있습니다.
강의 10강 7:15 여기에 보시면
컴팩트 컨스트럭터를 사용하는 경우 필드에 값을 넣어줄 수 없다고 말씀해주셨는데
여기서 직접 this.name 으로 넣는건 불가능하지만
public record MemberRecord(
String name,
@CustomAnnotation int age
) {
private static final String DEFAULT_NAME = "Unknown";
private static final int DEFAULT_AGE = 1;
public boolean isAdult() {
return age > 20;
}
public MemberRecord {
if (name == null || name.isBlank()) {
name = DEFAULT_NAME;
}
if (age < 0) {
age = DEFAULT_AGE;
}
}
}this.name으로 값을 할당하는 것이 아니라 잘못된 값이 들어오면 그걸 변경해서 넣어주는건 되는거 같습니다.
이런 용도로 컴팩트 컨스트럭처를 사용해도 될까요?
아니면 말씀해주신 것처럼 검증 용도로만 사용하는 것을 권장하시나요?
답변 1
1
안녕하세요! kamser님! 🙂 꼼꼼하게 확인해주셔서 정말 감사드립니다!
결론부터 말씀드리면, name = 0; 처럼 this를 사용하지 않고 값을 넣어주는 것은 가능합니다!
또한 이 방식은 https://blogs.oracle.com/javamagazine/post/java-record-compact-canonical-constructor 에서도 확인할 수 있듯이 필요한 경우 충분히 쓸 수 있는 패턴이라고 생각합니다!
즉, 꼭 검증용으로 compact constructor를 사용할 필요는 없고, 값을 재할당하는 방식으로 쓰셔도 좋습니다! 🙂
관련한 내용은 영상을 재촬영, 편집하여 업로드 해두었습니다! 오늘 중으로 PDF, PPT도 수정할 예정이에요!
kamser님 덕분에 저도 하나 배워갑니다. 감사합니다!! 🙏
1
답변 감사합니다.
자바 21까지 빠르게 중요한 내용을 습득할 수 있게 영상 올려주셔서 제가 더 감사합니다!
중간 중간마다 기능뿐만 아니라 왜 기능이 추가되었는지 알려주셔서 너무 도움이 되었어요
4강 카드뉴스 자동화 자료
2
39
1
내부 객체 직접 접근에 관하여.
0
28
1
라이브 강의 영상 녹화본이 있을까요?
0
51
1
presentation error
0
26
1
인증이 늦었습니다ㅜㅜ 확인부탁드립니다
0
45
1
9월 8일 세션 진행한 거는 없었을까요
0
37
1
FlushModeType.COMMIT (12:45) 예시코드 질문
0
26
1
미션1 진행방법 관련
1
38
1
클로드코드 명령어 - 대화&세션관리부분 강의자료 빈폴더
0
30
1
Spock given and가 검증을 하는지
0
28
1
Issuance 테이블에 status, couponId 인덱스가 꼭 필요할까요?
2
47
1
readme에 대한 자료는 따로 받아볼수 있나요?
0
43
2
InvalidCurriculumException DIP 적용 여부 문의
0
30
1
섹션2, 대화&세션관리 수업 자료 누락
0
40
2
영상 다운로드는 안되나요?
0
54
1
IntelliJ IDEA 체험 만료
0
56
2
부하 테스트 시 설정 관련 질문드립니다
1
78
2
잘지내시죠?
2
85
1
2강 예제 소스 실행 문의
0
138
3
12강 강의 챕터 제목에 오타가 있네요
1
174
1
14강 Map에 대해서 질문이 있습니다.
0
222
1
12강 AnimalDto에 대해서 질문이 있습니다.
1
213
1
2강 주요 키워드 정리 질문이 있습니다.
0
207
1
JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다
0
287
1





