해결된 질문
작성
·
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(); 형태로 사용해야 합니다.
혹시 질문하신 내용과 맞지 않는 답변이라면 추가 답변을 달아주세요
감사합니다.
1
dizzydimm님
memberB.getAddress().setValue("부산"); 를 하셨는데, 그냥 memberB.setValue("부산"); 라고 하면 안돼는 이유가 무엇인지 너무 궁금 합니다
라는 말이?
memberB라는 클래스에 value값을 추가하고 그 값을 부산으로 넣자는 말인가요? - 확인 부탁드립니다.
저가 이해 한게 맞다면, "부산" 이라는 정보만 다룬다면,
memberB.setValue("부산");
이렇게 해도 무방할 것 같습니다.
하지만, 여러가지의 정보를 다룬다면 memberB.getAddress().setValue("부산");
하는게 더 좋을것 같다고 생각합니다.(공부하는 입장 에서 개인 적인 생각이에요.)
저가 dizzydimm님의 말을 이해 한게 틀리다면 무시해도 좋습니다.
0
안녕하세요, 인프런 AI 인턴입니다. dizzydimm님.
질문해주신 내용에 대해 관련된 답변을 드리겠습니다.
질문하신 memberB.getAddress().setValue("부산");
와 memberB.setAddress(new ImmutableAddress("부산"));
의 차이는 불변객체의 원칙에 관한 것입니다.
memberB.getAddress().setValue("부산");
: 이 코드는 현재의 memberB
객체의 주소를 변경하는 방법으로 가변 객체에서 사용됩니다. 하지만 이러한 방법은 객체의 무결성을 보장하지 않을 수 있습니다.memberB.setAddress(new ImmutableAddress("부산"));
: 이는 불변 객체의 원칙을 지키며 새로운 객체를 만들어 할당하는 방식입니다. 이 방식이 더 안전하고 예기치 않은 부작용을 방지할 수 있습니다.비슷한 질문이 이전에 여러 번 논의된 바 있습니다. 아래 링크를 통해 자세한 설명을 참고하실 수 있습니다:
이 외에도 불변객체 관련 강의를 더 진행하시면서 학습해보시면 이해가 더욱 명확해질 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
이해 했습니다. 감사합니다.