-
[매일읽기] 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
Immutable classes in Java
The class is called immutable if it is impossible to change its state and content after the initialization (creation). So, let’s try to implement the immutable class by taking the mutable one and…
medium.com
반응형