item 12) 항상 toString을 재정의할 것
toString 메서드
Object의 기본 제공 메서드이다.
간결하면서 사람이 읽기 쉬운 형태의 유익한 주요 정보를 모두 반환해야 한다.
toString 메서드는 객체를 println, printf, 문자열 연결 연산자(+), assert 구문에 넘길 때, 혹은 디버거가 객체를 출력할 때 자동으로 불린다.
포맷의 문서화
반환값의 포맷을 문서화 할 지 정해야 한다. 포맷을 명시하면 객체는 표준적이고, 명확하고 가독성이 좋아진다.
단, 포맷을 한번 명시하면, 평생 해당 포맷을 지원해야 하므로 유연성이 줄어든다.
명시한 포맷에 맞는 문자열 <-> 객체 간 상호 전환할 수 있도록 정적 팩토리나 생성자를 제공해주면 좋다.
아래 예시는 long 값을 BigInteger 객체로 전환해주는 메서드이다.
toString 파싱하는 경우가 없도록 하기
toString으로밖에 정보를 얻지 못한다면 클라이언트가 직접 파싱하는 불상사가 발생한다.
toString의 반환값에 포함된 정보를 얻어올 수 있는 별도의 API를 반드시 제공해야 한다.
주의 사항
정적 유틸리티 클래스나 Enum 타입은 toString을 따로 재정의할 필요 없다.
그러나, 하위 클래스들이 공유해야 할 문자열 표현이 있는 추상 클래스일 경우 재정의가 필요하다.
자동 생성에 적합하지는 않더라도 객체의 값에 관해 아무것도 알려주지 않는 Object의 toString보다는 AutoValue로 생성된 toString이 훨씬 유용하다. (item 10)
Last updated