자바 에서 가 변 적 이지 않 은 대상 (immutable object) 이 무엇 인지, 무슨 의미 가 있 습 니까?
구조 기 가 실행 되면 이 인 스 턴 스 는 바 꿀 수 없습니다.
대상 의 인용 을 전달 할 수 있 음 을 의미 하 며, 그 내용 을 바 꾸 는 것 은 걱정 하지 않 아 도 된다. 특히 병행 할 때 가 변 적 이지 않 은 대상 은 잠 금 문제 가 없어 구조 적 으로 사용 하기 쉽다.
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();
}
깊이 있 는 복사 로 상태의 불변성 을 확보 하 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.