불변 객체
<aside> 🦽
설명

예제
<aside> 🎹
설명
해당 값이 변경되는 필드 값을 private final로 지정을 해놓으면 한 번 설정된 주소 안의 값은
변경되지 않음
private final String value;
와 같이 설정을 하면 이제 생성자를 통해서만 값을 설정 가능하고, 이후에는 값을
변경하는 것이 불가능
!!주의점
public void setValue(String value) {
this.value = value;
}
와 같이 값을 외부에서 지정 가능하도록 하는 메소드는 생성하면 안됌
</aside>
예제2
<aside> 🕝
package address;
public class MemberMainV2 {
public static void main(String[] args) {
ImmutableAddress address = new ImmutableAddress("서울");
MemberV2 memberA = new MemberV2("A", address);
MemberV2 memberB = new MemberV2("B", address);
//A, B
System.out.println("memberA = " + memberA);
System.out.println("memberB = " + memberB);
//B
//memberB.getAddress().setValue(""); //
memberB.setAddress(new ImmutableAddress("부산"));
System.out.println(" -> memberB.address");
System.out.println("memberA = " + memberA);
System.out.println("memberB = " + memberB);
}
}
</aside>

객체 생성 방법 참고
// 방법 1: 별도로 객체를 변수에 저장한 뒤 전달
ImmutableAddress newAddress = new ImmutableAddress("부산");
memberB.setAddress(newAddress);
// 방법 2: 객체 생성과 동시에 메서드에 전달
memberB.setAddress(new ImmutableAddress("부산"));