불변 객체란, 외부에서 불변 객체의 값을 수정할 수 없는 객체
immutable 의 java 에서의 키워드 => final
자바에서의 final
은 불변을 만들어주는게 아니고, 재할당을 금지
List, Map 등 객체 내부의 상태가 변경되지 못하게 하는것은 아님
final
키워드의 용도별 쓰임새
- 클래스 시그니처 -> 해당 클래스 상속 불가
- 메소드 시그니처 -> 해당 메소드 오버라이딩 불가
- 변수 -> 해당 변수 재할당 불가
불변 객체 및 final을 사용해야 하는 이유
- Thread-safe
- 불변 객체가 아닌, 가변 객체를 통해 작업을 진행하면 객체가 불안정한 상태에 빠질 수 있음
- 가비지 컬렉션의 성능을 높일 수 있음
Mutable 과 Immutable