toString을 항상 오버라이딩(재정의, Overriding)해라.
in Development on Java
toString을 오버라이딩하는 이유
Object의 기본 toString 메서드가 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 즉, toStting은 오버라이딩 하지 않으면 PhoneNumber@adbbd1avb23a
와 같이 클래스_이름@16진수로_표시한_해시코드
를 메시지로 반환할 뿐이다. 이러한 반환 형태는 디버깅을 하더라도 쓸모없는 메시지만 로그에 남을 것이다.
toString의 규약에서는 “모든 하위 클래스에서 이 메서드를 재정의하라”고 권장한다. toString을 잘 구현한 클래스는 사용하기에 훨씬 즐겁고, 그 클래스를 사용한 시스템은 디버깅하기 쉽기 때문이다.
toString을 오버라이딩 할 때 고려할 점
- 실전에서 toString은 그 객체가 가진 주요 정보 모두를 반환하는 게 좋다.
{Jenny=PhoneNumbrer@adbbd1avb23a}
보다는{Jenny=707-867-5309}
라는 메시지가 나오는 게 훨씬 유의미하고 가독성이 좋기 때문이다. - 객체가 거대하거나 객체의 상태를 글자 그대로 표현하기에는 적합하지 않은 경우에는 “
맨해튼 거주자 전화번호부(총 1487536개)
“와 같이 요약 정보를 담아야 한다. - 권장하는 바로는 스스로를 완벽히 설명하는 문자열로 표현하는 것이다.
References
- Effective Java(이펙티브 자바) - 조슈아 블로크, 인사이트 → [아이템 12. toString을 항상 재정의하라.]