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

dizzydimm님의 프로필 이미지
dizzydimm

작성한 질문수

김영한의 실전 자바 - 중급 1편

불변 객체 - 예제

멤버B의 주소 바꿔주는 방법에 관한 질문

해결된 질문

작성

·

59

0

 [질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
강의중에 나온 이부분에 관해 질문이 있습니다.

memberB.getAddress().setValue("부산");

memberB.setAddress(new ImmutableAddress("부산"));

여기서, 멤버B의 주소를 바꿔 줄때,

memberB.getAddress().setValue("부산"); 를 하셨는데, 그냥 memberB.setValue("부산"); 라고 하면 안돼는 이유가 무엇인지 너무 궁금 합니다

답변 3

1

안녕하세요. dizzydimm님, 공식 서포터즈 코즈위버입니다.

회원의 주소를 변경하는 코드에 관한 질문이네요.

 

memberB.setValue(""); 형태로 값을 설정하기 위해선 Member 클래스가 다음과 같은 필드를 가지고 있어야 합니다.

public class Member {
    private String value;
}

그러나 Member 클래스 안의 Address 클래스 안의 value 를 변경해야 하므로 memberB.getAddress().setValue(); 형태로 사용해야 합니다.

 

혹시 질문하신 내용과 맞지 않는 답변이라면 추가 답변을 달아주세요

감사합니다.

dizzydimm님의 프로필 이미지
dizzydimm
질문자

이해 했습니다. 감사합니다.

1

dizzydimm님

memberB.getAddress().setValue("부산"); 를 하셨는데, 그냥 memberB.setValue("부산"); 라고 하면 안돼는 이유가 무엇인지 너무 궁금 합니다

라는 말이?

memberB라는 클래스에 value값을 추가하고 그 값을 부산으로 넣자는 말인가요? - 확인 부탁드립니다.

저가 이해 한게 맞다면, "부산" 이라는 정보만 다룬다면,

memberB.setValue("부산"); 이렇게 해도 무방할 것 같습니다.

하지만, 여러가지의 정보를 다룬다면 memberB.getAddress().setValue("부산");

하는게 더 좋을것 같다고 생각합니다.(공부하는 입장 에서 개인 적인 생각이에요.)

저가 dizzydimm님의 말을 이해 한게 틀리다면 무시해도 좋습니다.

dizzydimm님의 프로필 이미지
dizzydimm
질문자

예. 맞습니다. 그냥 바로 바꿔줘도 될텐데라고 생각을 했어요.

답변 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. dizzydimm님.

질문해주신 내용에 대해 관련된 답변을 드리겠습니다.

질문하신 memberB.getAddress().setValue("부산");memberB.setAddress(new ImmutableAddress("부산"));의 차이는 불변객체의 원칙에 관한 것입니다.

  1. memberB.getAddress().setValue("부산");: 이 코드는 현재의 memberB 객체의 주소를 변경하는 방법으로 가변 객체에서 사용됩니다. 하지만 이러한 방법은 객체의 무결성을 보장하지 않을 수 있습니다.
  2. memberB.setAddress(new ImmutableAddress("부산"));: 이는 불변 객체의 원칙을 지키며 새로운 객체를 만들어 할당하는 방식입니다. 이 방식이 더 안전하고 예기치 않은 부작용을 방지할 수 있습니다.

비슷한 질문이 이전에 여러 번 논의된 바 있습니다. 아래 링크를 통해 자세한 설명을 참고하실 수 있습니다:

  1. 불변 객체 강의 중
  2. 수업 중 질문
  3. “챕터 2 - 불변 객체 - 예제” 에서 나온 코드들이 실무에서 자주 사용하는지?

이 외에도 불변객체 관련 강의를 더 진행하시면서 학습해보시면 이해가 더욱 명확해질 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dizzydimm님의 프로필 이미지
dizzydimm

작성한 질문수

질문하기