불변 객체는 재할당은 가능하나, 한번 할당하면 내부 데이터를 변경할 수 없는 객체
아래 코드는 불변이 아닌 클래스
class MutablePerson {
public int age;
public int name;
public MutablePerson(int age, int name) {
this.age = age;
this.name = name;
}
}
해당 클래스를 불변 클래스로 만들어보면
class ImmutablePerson {
private final int age;
private final int name;
public ImmutablePerson(int age, int name) {
this.age = age;
this.name = name;
}
}
객체에 대한 신뢰도 상승
생성자, 접근메소드에 대한 방어 복사가 필요 없음
멀티스레드 환경에서, 동기화 처리없이 객체를 공유 가능