해결된 질문
작성
·
136
·
수정됨
0
ImmutableAddress에서 value를 final로 설정했는데
MemberV2에서 setAddress를 쓸 수 있는 건가요?
final로 선언하면 setter를 못 쓴다고 알고 있어서 질문합니다.
(불변 객체 - 값 변경 강의입니다.)
package immutable.address;
public class ImmutableAddress {
private final String value;
public ImmutableAddress(String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return "Address{" +
"value='" + value + '\'' +
'}';
}
}
package immutable.address;
public class MemberV2 {
private String name;
private ImmutableAddress address;
public MemberV2(String name, ImmutableAddress address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ImmutableAddress getAddress() {
return address;
}
public void setAddress(ImmutableAddress address) {
this.address = address;
}
@Override
public String toString() {
return "MemberV1{" +
"name='" + name + '\'' +
", address=" + address +
'}';
}
}
답변 1
0
안녕하세요. show_3_님, 공식 서포터즈 OMG입니다.
Member의
private ImmutableAddress address;의 경우
address는 final을 선언한 불변이 아니기 때문에 address 는 변경이 가능합니다 😀
(private final ImmutableAddress address;
)
.
한번 정의된 주소는 변경이 불가능하지만, 사람이 갖는 주소는 변경이 가능하므로 해당 시나리오를 빗댄 예시입니다 😀
불변으로 지정한 대상이 주소라는 개념의 주소값 인지, 주소를 갖는 사람인지를 파악하여 이해하시면 될 것 같습니다 ^^
감사합니다.