Search
🙉

이펙티브 자바:: 아이템 12 <toString을 항상 재정의하라>

Intro::

이펙티브 자바 정리본입니다.

toString을 재정의 해야하는 이유

Object의 기본 toString 메서드는 일반적으로 클래스에 적합한 문자열을 반환하지 않는다. 단순히 클래스_이름@16진수로_표시한_해시코드를 반환할 뿐이다.
toString을 잘 구현한 클래스는 사용하기 훨씬 용이하고, 그 클래스를 사용한 시스템은 디버깅하기 쉽습니다.

toString 어떻게 재정의하면 좋은가

toString은 그 객체가 가진 주요 정보 모두를 반환하는게 좋습니다. 만약 객체가 거대하거나 객체의 상태가 문자열로 표현하기에 적합하지 안하면 요약 정보를 담는 것이 좋습니다.
toString을 구현할 때면 반환값의 포맷을 문서화할지 정해야 합니다.
포맷을 명시하든 아니든 의도는 명확하게 밝혀야 합니다.
toString이 반환한 값에 포함된 정보를 얻어올수 있는 API를 제공하는게 좋습니다. 그렇지 않다면 이 정보가 필요한 프로그래머는 toString의 반환값을 파싱할 수 밖에 없습니다.
정적 유틸리티 클래스의 경우 toString을 제공해야 할 이유가 없고, 대부분의 열거 타입도 자바가 이미 완벽한 toString을 제공하기 때문에 따로 정의하지 않아도 됩니다. 하지만 하위 클래스들이 공유해야 할 문자열 표현이 있는 추상 클래스라면 toString을 재정의해줘야 합니다.

References::

이펙티브 자바 / 조슈아 블로크 지음 (프로그래밍 인사이트)