99페이지 두 번째 단락을 보시면,
가변 객체나, final이 아닌 인스턴스 필드를 public으로 선언하면, 불변식을 보장할 수 없다.
라고 되어있습니다.
불변식을 깨뜨린 다는건, 다른 객체에서 임의로 값을 변경이 가능하다는 뜻일까요?
이에 따른 예제 코드를 작성하였는데, 위에 해당하는 내용과 일치하는지 확인 부탁드립니다.
public static class C {
// 가변 인스턴스
public int[] arr = {1,2,3,4,5};
public char ch = 'c';
// 가변 객체
public List<Integer> list = new ArrayList<Integer>();
}
public static class D {
C c = new C();
public void changeC() {
// 객체 C의 불변성 보장 실패
c.arr[3] = 6;
c.ch = 'd';
c.list.add(11);
}
}
99페이지 두 번째 단락을 보시면,
가변 객체나, final이 아닌 인스턴스 필드를 public으로 선언하면, 불변식을 보장할 수 없다.라고 되어있습니다.
불변식을 깨뜨린 다는건, 다른 객체에서 임의로 값을 변경이 가능하다는 뜻일까요?
이에 따른 예제 코드를 작성하였는데, 위에 해당하는 내용과 일치하는지 확인 부탁드립니다.