toString을 항상 오버라이딩(재정의, Overriding)해라.

toString을 오버라이딩하는 이유

Object의 기본 toString 메서드가 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 즉, toStting은 오버라이딩 하지 않으면 PhoneNumber@adbbd1avb23a와 같이 클래스_이름@16진수로_표시한_해시코드를 메시지로 반환할 뿐이다. 이러한 반환 형태는 디버깅을 하더라도 쓸모없는 메시지만 로그에 남을 것이다.

toString의 규약에서는 “모든 하위 클래스에서 이 메서드를 재정의하라”고 권장한다. toString을 잘 구현한 클래스는 사용하기에 훨씬 즐겁고, 그 클래스를 사용한 시스템은 디버깅하기 쉽기 때문이다.

toString을 오버라이딩 할 때 고려할 점

  • 실전에서 toString은 그 객체가 가진 주요 정보 모두를 반환하는 게 좋다. {Jenny=PhoneNumbrer@adbbd1avb23a}보다는 {Jenny=707-867-5309}라는 메시지가 나오는 게 훨씬 유의미하고 가독성이 좋기 때문이다.
  • 객체가 거대하거나 객체의 상태를 글자 그대로 표현하기에는 적합하지 않은 경우에는 “맨해튼 거주자 전화번호부(총 1487536개)“와 같이 요약 정보를 담아야 한다.
  • 권장하는 바로는 스스로를 완벽히 설명하는 문자열로 표현하는 것이다.

References