inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 9부터 자바 21까지

10강. Record class와 Sealed class

compact constructor 질문이 있습니다.

해결된 질문

219

티벳로보

작성한 질문수 49

1

강의 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으로 값을 할당하는 것이 아니라 잘못된 값이 들어오면 그걸 변경해서 넣어주는건 되는거 같습니다.

이런 용도로 컴팩트 컨스트럭처를 사용해도 될까요?

아니면 말씀해주신 것처럼 검증 용도로만 사용하는 것을 권장하시나요?

java

답변 1

1

최태현

안녕하세요! kamser님! 🙂 꼼꼼하게 확인해주셔서 정말 감사드립니다!

 

결론부터 말씀드리면, name = 0; 처럼 this를 사용하지 않고 값을 넣어주는 것은 가능합니다!

또한 이 방식은 https://blogs.oracle.com/javamagazine/post/java-record-compact-canonical-constructor 에서도 확인할 수 있듯이 필요한 경우 충분히 쓸 수 있는 패턴이라고 생각합니다!

 

즉, 꼭 검증용으로 compact constructor를 사용할 필요는 없고, 값을 재할당하는 방식으로 쓰셔도 좋습니다! 🙂

관련한 내용은 영상을 재촬영, 편집하여 업로드 해두었습니다! 오늘 중으로 PDF, PPT도 수정할 예정이에요!

 

kamser님 덕분에 저도 하나 배워갑니다. 감사합니다!! 🙏

1

티벳로보

답변 감사합니다.

자바 21까지 빠르게 중요한 내용을 습득할 수 있게 영상 올려주셔서 제가 더 감사합니다!

중간 중간마다 기능뿐만 아니라 왜 기능이 추가되었는지 알려주셔서 너무 도움이 되었어요

 

0

최태현

그런 부분을 특히 신경써서 준비했는데 도움이 되셨다니 다행입니다! 🙂

감사합니다!

네이버 API | '검색 - 책' API 제공 중단

0

5

0

ArticleReadService 관련 질문

0

6

0

kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.

1

20

1

이론 공부법 요약본 버전 업데이트 문의

0

10

1

domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다

1

17

1

해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.

0

7

1

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

22

2

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

11

1

Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면

1

55

1

리뉴얼 시기

0

29

2

스크립트에 대해 질문 있습니다.

1

46

1

같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!

2

47

2

조건 검색 질문

0

31

1

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

46

3

클로드코드 명령어-대화&세션관리 수업 자료

0

37

1

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

51

2

PlatformTransactionManager, ResourcelessTransactionManager 질문

1

56

2

잘지내시죠?

2

72

1

2강 예제 소스 실행 문의

0

129

3

12강 강의 챕터 제목에 오타가 있네요

1

171

1

14강 Map에 대해서 질문이 있습니다.

0

217

1

12강 AnimalDto에 대해서 질문이 있습니다.

1

208

1

2강 주요 키워드 정리 질문이 있습니다.

0

204

1

JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다

0

284

1