-
[매일읽기] Immutable classes in Java개발자 라이프/매일읽기 2020. 7. 26. 09:26반응형
자바에서 불변 객체의 특징과 생성 방법을 알아본다
불변 객체의 특징
객체의 값(상태;state)가 변경되지 않는다.
- 변하지 않는 값으로 확신할 수 있으므로 개발 과정에서 안정적이다.
- 멀티 스레드 환경에서 안정적이다.
- VM 캐시 혹은 별도 구현 캐시에 쉽게 캐시하고 사용할 수 있다.
- equals() & hashCode() 가 구현된 상태에서 해시 컬랙션에 안정적으로 넣을 수 있다.
가변 객체에서 불변 객체 만드는 과정
No. 과정 취약점 1 setter를 제거하여 직접적인 변경을 막는다. 초기 데이터를 넣을 수 없다. 2 all args 생성자를 추가하여 데이터를 생성 초기에만 넣을 수 있도록 한다. 클래스 상속 후 데이터를 변경하는 메소드를 추가 구현하여 데이터를 변경한다. 3 final 클래스로 지정하여 클래스 상속을 막는다. 멤버 변수 중 객체 타입이 있다면 생성 시 전달된 주소 값을 이용하여 외부에서 변경 가능하다. 4 생성자에서 멤버 변수를 초기화할 때, 파라미터를 깊은 복사하여 초기화 한다. 객체 타입 멤버 변수를 getter로 반환하여 외부에서 변환 가능하다. 5 primitive 타입이 아닌 가변 타입의 getter 반환 시, 깊은 복사를 통해 반환한다.
+ 각 멤버 변수에 final을 명시한다.자세한 코드와 내용은 본문 참조
출처 : https://medium.com/@mykola.shumyn/immutable-classes-in-java-76635df0356d
반응형