인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

2v2님의 프로필 이미지
2v2

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

값 타입과 불변 객체

setter 관련 질문

작성

·

273

1

항상 강의 잘 듣고 있습니다

다름이아니라 강의 흐름을 보면 member2.setHomeAddress에서 member2.setHomeAddress(copyAddress)가 아니라

member2.setHomeAddress(address)로 할 경우 이를 막을 방법이 없다가 객체 타입의 한계라고 말씀해주셨는데요

이를 해결하기 위해 불변 객체 말씀을 해주셨는데 불변 객체 예시로 들어주신 것은 Address 라는 값타입의 setter를 없애는 것이었는데요 

Address의 setter를 없애도 똑같이 member2.setHomeAddress(copyAddress)가 아니라

member2.setHomeAddress(address)로 할 경우 참조가 공유되는 문제는 해결 못하지 않나요 ?

답변 1

1

안녕하세요. 2v2님, 공식 서포터즈 David입니다.

불변객체와 setter를 설명하실 때는 member의 Address 필드 상태를 변경하는 setter가 아니라 Address의 String city 필드 상태를 변경하는 setter에 대해 말하고 있습니다.

흐름상 헷갈릴 수 있으니 위 내용을 인지한 후 다시 강의를 들어보시면 좋을 것 같습니다.

감사합니다.

2v2님의 프로필 이미지
2v2
질문자

답변 감사드립니다

말씀은 이해했습니다. 그럼 Address의 setter 문제가 아니라 확장해서 member에서 객체 타입의 문제( member2.setHomeAddress(copyAddress)가 아니라 member2.setHomeAddress(address)를 호출했을 때 막지 못하는 문제) 해결하기 위해서 멤버의 setter 또한 Address처럼 변경을 해야하는건가요?

네, 맞습니다.

2v2님의 프로필 이미지
2v2
질문자

감사합니다!

2v2님의 프로필 이미지
2v2

작성한 질문수

질문하기