교안과 강의내용의 차이점 및 Member(String name) 생성자 초기화 세팅
우선 강의 에서는 생성자를 아래와 같이 구성하여 진행하였습니다
public Member(String username) {
this.username = username; // 2번 생성자 호출
}
public Member(String username, int age, Team team) {
this.username = username;
this.age = age;
if (team != null) {
changeTeam(team);
}
}순차적으로 각각 1번과 2번 생성자로 구분한다고 가정하였을 경우 강의 교안에서는 아래와 같은 코드로 구성되어 있습니다.
public Member(String username) {
this(username, 0); // 2번 생성자 호출
}
public Member(String username, int age) {
this(username, age, null); // 3번 생성자 호출
}
public Member(String username, int age, Team team) {
this.username = username;
this.age = age;
if (team != null) {
changeTeam(team);
}
}논리적으로 해석해보자면 2번째 생성자는 username과 age만 값이 세팅되므로 team에 대한 값은 null로 세팅하는게 맞다 라고 판단이 되었으나,
1번째 생성자는 username만 초기화되고 age에 대한 값만 0으로 초기화 해주지만 team에 대한 값은 들어오지 않았으니 null로 처리해줘야 하는게 아닌가? 하는 의문이 들었습니다.
public Member(String username) {
this(username, 0, null); // 2번 생성자 호출
}
위와 같이 1번 생성자의 this() 초기화에서는 username만 들어온다면 2번째 생성자와 같이 team에대한 값을 null로 함께 초기화 해야 맞는것이 아닌가 의문이 듭니다.
답변 1
1
안녕하세요. kate님, 공식 서포터즈 코즈위버입니다.
첫 번째 생성자에서 (userName, 0, null)을 사용한다면 두 번째 생성자를 호출하지 않고 세 번째 생성자로 바로 넘어가게 됩니다. 파라미터의 타입과 갯수에 맞는 생성자를 찾기 때문입니다.
사용자 편의를 위해 다양한 생성자(인터페이스)를 제공하되, 내부에서는 같은 메서드로 코드를 처리하는 방법은 코드 재활용, 이미 검증된 코드를 쓰기에 안정감이 있다는 면에서 좋은 방법이라 생각합니다.
감사합니다.
0
와 제가 간과한부분이 있었군요.
저렇게 생성자를 선언 하는게 맞네요
인스턴스 생성시 1번 생성자 호출시 2번을 호출하면서 3번까지 순차적으로 호출이되니까 자동으로 username이외의 값은 0과 null로 초기화되고
인스턴스 생성시 2번 생성자를 호출하면 3번을 호출하니 username과 age 이외의 team만 null로 처리가 되네요.
감사합니다!
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
70
1
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
107
3
MemberRepository 구현체
0
58
1
pdf 표현 질문드립니다.
0
62
1
로그가 남지 않는 문제.
0
81
1
테스트 라이브러리가 강의는 junit4가 맞나요??
0
70
2
pdf 파일과 차이점이 있는 것같은데 문제 없나요?
0
72
2
@PrePersist, @PreUpdate 호출 시점 질문드립니다.
0
91
2
Sort 인터페이스는 잘 사용 안하나요?
0
52
1
스캔대상 질문드립니다.
0
46
1
하이버네이트6에서의 최적화에 이은 질문
0
86
1
save() vs saveAndFlush DB 통신 횟수
0
54
1
순수 JPA 리포지토리 코드 수정부분
0
86
2
bulk연산 후 flush하는 이유를 모르겠어요
0
152
3
bulk insert 질문입니다.
0
178
2
교만했던 것 같아요.
0
147
1
RESTful 강의는 안하시는 건지 궁금합니다.
0
147
2
동적 테이블에 대한 질문
0
86
1
영속성 전이와 연관관계
0
130
2
강의 10:25 질문
0
74
1
단건 update 질문
0
95
2
엔티티 와 도메인의 경계
0
127
1
UsernameOnlyDto 타입 type mismatch 오류
0
119
1
Projection 개념과 데이터 전달과정에 대해 질문 있습니다.
0
136
1





