Skip to content

[Effective Java] Item 15. 불변식을 보장할 수 없다?? #8

@taxol1203

Description

@taxol1203

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);
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions