본문 바로가기

programming/java

Item 12. toString을 항상 재정의하라.

[WHY]

toString을 잘 구현할 클래스는 사용하기 편하고 디버깅이 용이하다.

ex) assert구문을 넘길 때, 디버거가 객체를 출력할 때, toString이 호출된다.

[WHEN]

대상 : 하위 클래스들이 공유해야 할 문자열 표현이 있는 추상 클래스

예외 대상 : 정적 유틸리티 클래스, 열거타입

[HOW]

실전에서 toString을 그 객체가 가진 주요 정보를 모두 반환하는 것이 좋다.

하지만 객체가 너무 비대하다면 요약된 정보를 반환하는 것도 방법이다.

포맷을 명시할지 결정하여 문서화를 한다. 이때 설계자의 의도를 명확하게 명시해야한다.

toString의 결과에서 필요한 정보를 추출하는 것은 성능적으로 손해이고 더 좋은 방법이 있다. 다른 getter 함수(API)를 생성하여 추출의 책임을 다른 메서드에 할당하자.