Java

Java / 불변 객체

Dear-J 2025. 2. 24. 16:33

기본형과 참조형의 공유

기본형 : 하나의 값을 여러 변수에서 절대로 공유하지 않음

참조형 : 하나의 객체를 참조값을 통해 여러 변수에서 공유 할 수 있음

 

공유 참조와 사이드 이펙트

사이드 이펙트 : 프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것

>> 보통 부정적인 의미, 특정 부분에서 발생한 변경이 의도치 않게 다른 부분에 영향

>> 디버깅이 어려워지고 코드의 안정성 저하

 

하나의 객체를 여러 변수가 공유하지 않도록 막을 방법이 없음!!

>> 공유된 객체의 값을 변경하지 못하게 하자!!

 

불변 객체(Immutable Object)

객체의 상태(객체 내부의 값, 필드, 멤버 변수)기 변하지 않는 객체

>> 불변 클래스로 만들어서 참조하는 인스턴스의 값을 변경하려면 새로운 인스턴스를 생성해서 할당

 

불변이라는 단순한 제약을 사용해 사이드 이펙트라는 큰 문제를 막자!!

 

불변 객체의 메서드가 "with"로 이름 지어진 경우

>> 그 메서드가 지정된 수정사항을 포함하는 객체의 새 인스턴스를 반환

'Java' 카테고리의 다른 글

Java / 래퍼, Class 클래스  (0) 2025.02.24
Java / String 클래스  (0) 2025.02.24
Java / Object 클래스  (0) 2025.02.24
Java / 다형성과 설계  (0) 2025.02.23
Java / 추상 클래스와 인터페이스  (0) 2025.02.23