<aside>
💡 Object
의 기본 toString
메서드가 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다!
</aside>
클래스 이름@16진수로 표현한 해시코드
를 반환한다.
toString
은 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환해야 한다!
equals
와hashCode
만큼 중요하진 않지만,toString
을 잘 구현한 클래스는 사용하기 즐겁고, 디버깅하기 쉽다.
toString
메서드는 객체를 println
, printf
, +
, assert
구문에 넘길 때, 디버거가 객체를 출력할 때 자동으로 불린다.
phoneNumber
용 toString
을 제대로 재정의했다면, 다음 코드만으로 문제를 진단하기에 충분한 메시지를 남길 수 있다.
System.out.println(phoneNumber + "에 연결할 수 없습니다.");
toString
을 재정의했든 아니든 대부분은 진단 메시지를 위와 같이 만든다.
toString
은 이 인스턴스를 포함하는 객체에서 유용하게 쓰인다.실전에서
toString
은 그 객체가 가진 주요 정보 모두를 반환하는게 좋다.
ex) {Jenny=PhoneNumber@adbbd}
보다는, {Jenny=707-867-5309}
toString
을 구현할 때면 반환값의 포맷을 문서화할지 정해야 한다.
포맷을 문서화하는 것의 단점?
포맷을 명시하든 아니든 우리의 의도는 명확히 밝혀야 한다.