HihoBookStudy / EffectiveJava

이펙티브 자바 북스터디입니다.
1 stars 0 forks source link

[Item 17] 가변 동반 클래스(companion class) #26

Closed zpqmdh closed 2 months ago

zpqmdh commented 2 months ago

책 p.110에는 불변 객체의 단점에 대한 해결 방식 중 하나로, 다단계 연산(multiple operation)들을 예측하여 기본 기능으로 제공하는 방법에 대해 설명하고 있습니다. 예로는 BigInteger 의 모듈러 지수 같은 다단계 연산 속도를 높여주는 가변 동반 클래스(companion class)package-private으로 선언한 것을 들고 있습니다.

이때, StringStringBuilder 로도 함께 예를 들고 있는데, BigIntegerString 이 둘의 차이가 무엇인지 궁금합니다. 부가적으로 가변 동반 클래스를 어떻게 클라이언트의 요구를 예측하여 구현하였는지도 궁금합니다.

ForteEscape commented 2 months ago

Q.

이때, String의 StringBuilder 로도 함께 예를 들고 있는데, BigInteger 과 String 이 둘의 차이가 무엇인지 궁금합니다. 부가적으로 가변 동반 클래스를 어떻게 클라이언트의 요구를 예측하여 구현하였는지도 궁금합니다.

A. 아래 사진은 BigInteger가 있는 math 패키지 내부의 여러 클래스들입니다. image