#10 toString 메서드는 항상 오버라이드 하자
Object 클래스에 기본적으로 구현되어 있는 toString 메서드는 위에서 처럼 클래스 이름과 "@" 그리고 hashCode 메서드에서 반환되는 값으로 구성되어 있습니다.
기본 toString 메서드를 실행하면 아래와 같은 String 값이 반환됩니다.
chapter03.item10.PhoneNumber@963c2
toString 메서드의 보편적 계약사항에 대해 알아보겠습니다.
간결해야 하지만 사람이 읽기 쉬운 형태의 정보로 표현되어야 합니다.
모든 서브 클래스들은 이 메서드를 오버라이드 하길 권장합니다.
아래와 같이 printf, println 메서드, + 연산자, assert, 디버거 출력 등 객체들이 전달되면 자동으로 toString 메서드가 호출됩니다.
사실 성능상에 이슈가 생기기보다는 이는 알아보기가 힘듭니다.
만약 toString 메서드를 아래와 같이 오버라이드 한다면, 전보다는 사람이 읽기 훨씬 더 쉬운 형태입니다.
가능하다면 객체의 모든 중요한 정보를 반환해야 합니다.
하지만 객체가 너무 크거나, 문자열로 바로 변환하기 어려운 경우에는 비효율적입니다.
이럴 때는 요약된 정보만 반환하는 게 좋습니다.
아래와 같이 반환할 수 있습니다.
Manhattan white pages (11234342 listings)
Thread [main, 5, work]
그리고 toString 메서드의 의도를 명쾌하게 문서화해야 합니다.