상태가없는 개체에는 상태가 없습니다. 이 해당 번호/카운트가 변경되지 않습니다 의미와 스레드의 'N'번호로 참조되는 관계없이 일관성을 유지합니다
public class MyClass {
public static final int number = 1;
private final int count = 1;
}
: 모든 필드를하거나 아래와 같이 일정 필드가 나던 유틸리티 클래스 말의 예를 가지고 . 내가 private 필드 말과 함께 수업을하고 세터/게터 액세스 말되는 경우 다음이 모양을하는 동안
는 :
public class MyInvariantClass {
private int number;
public int getNumber() {
return number;
}
public void incrNumber() {
this.number++;
}
public void setNumber() {
this.number = number;
}
}
이 클래스 MyInvariantClass, 번호 필드와 상태를 가지고있다. 이 객체가 여러 스레드로 전달된다고 생각하십시오. 일부는 그것을 증가시킬 수도 있고, 어떤 것은 그것을 설정할 수도 있습니다. 우리가 사용하고있는 숫자가 결코 int 범위를 벗어나지 않으며 기본값이 음수가되도록 보장합니까? 그래서 여기서 우리는 오버플로가 발생할 때 정수의 불변성을 유지하지 못합니다.
출처
2014-12-31 13:27:17
SMA
스테이트리스 오브젝트는 컴파일시의 시정 수 필드 만 가지므로 - 아니요, 어떤 인 터리 언트도있을 수 없습니다. 그러나 메소드에는 불변성이있을 수 있습니다. –
직관적으로, 아니요. 상태가 없으면 클래스에 불변량을 적용 할 수 없습니다. 조건을 수행 할 국가가 없을 때 어떤 불변 조건을 만들 수 있습니까? –