자바 에서 가 변 적 이지 않 은 대상 (immutable object) 이 무엇 인지, 무슨 의미 가 있 습 니까?

1020 단어 JavaImmutable
불가 변 대상
구조 기 가 실행 되면 이 인 스 턴 스 는 바 꿀 수 없습니다.
 
대상 의 인용 을 전달 할 수 있 음 을 의미 하 며, 그 내용 을 바 꾸 는 것 은 걱정 하지 않 아 도 된다. 특히 병행 할 때 가 변 적 이지 않 은 대상 은 잠 금 문제 가 없어 구조 적 으로 사용 하기 쉽다.
 
final class ImmutableClass {
	final String str;
	final int value;
    final int[] ints;
	
	public ImmutableClass(final String str, final int value) {
		this.str = str;
		this.value = value;
	}
	
	public String getStr() {
		return str;
	}
	
	public int getValue() {
		return value;
	}
}

 
1. final 수식 클래스 사용
보증 류 는 계승 할 수 없 으 며, 불변성 을 보장 한다.
 
2. final 수식 클래스 속성 사용
외부 에서 그 속성 을 변경 하고 불변성 을 파괴 하 는 것 을 방지 하 다.
 
3. 클래스 에 클래스 인용 이 포함 되 어 있 을 때 는 깊 은 복사 본 을 사용 해 야 합 니 다.
public ImmutableClass(int[] ints) {
    this.ints = ints;
}

구조 기 를 통 해 내부 대상 을 직접 초기 화 할 때 외부 대상 의 변 화 를 통 해 클래스 의 내부 상 태 를 파괴 하고 변형 되 지 않 는 것 을 파괴 할 수 있다.
public ImmutableClass(int[] ints) {
    this.ints = ints.clone();
}

깊이 있 는 복사 로 상태의 불변성 을 확보 하 다.
 

좋은 웹페이지 즐겨찾기