2011-04-13 3 views

답변

0

불변의 클래스는 불변으로, 오브젝트에 대한 기존의 참조를 가지는 오브젝트는 엉망이되어, 머물러있는 오브젝트 내의 정보에 의존합니다. 어떤 경우에는 효율성에 약간의 타격을 주지만, 신뢰성과 안정성은 절충안입니다. 기본적으로 사용되는 각 메소드에 대해 새로운 객체가 생성된다는 의미입니다.

2

한 가지 이유는 변경 불가능한 클래스가 스레드로부터 안전하다는 것입니다.

1

공유 가능 상태를 올바르게 관리하기가 어렵 기 때문에 (때로는 비효율적이기 때문에). String이 변경 불가능한 경우 각 메소드는 스레드로부터 안전해야하며 문자열의 내용을 변경할 수 있어야합니다. 이 경우 변경할 수 없다는 것은 잠금이 필요 없다는 것을 의미합니다. 문자열로 수행 할 수있는 유일한 작업은 읽을 수 있기 때문입니다.

이것은 기능 프로그래밍 언어의 주요 이점 중 하나입니다. 모든 상태는 변경 불가능합니다 (즉, 파괴적인 업데이트는 허용되지 않습니다).

관련 문제