Item 12. toString

toString을 항상 재정의하라

toString을 재정의하지 않으면 기본값으로 클래스이름@16진수_해시코드를 반환하는데, 일반적으로 사람이 필요한 정보가 아니기 때문에 재정의하는 것이 좋다. 직접 호출하지 않아 toString을 재정의하지 않는 경우가 많은데, print관련 메서드나 디버거가 객체를 출력할 때 자동으로 호출하기 때문에 의미있는 정보를 반환하도록 재정의하는 것이 좋다.

포맷 문서화

toString의 출력 값 포맷에 대해 문서화를 하는 것은 장/단점이 존재한다.

  • 장점: 객체가 표준적이고, 명확해지며, 클라이언트가 손쉽게 사용 가능

  • 단점: 포맷을 한번 명시하면 평생 그 포맷에 얽매이게 되며, 이를 수정하기 어려워짐

때문에 포맷을 명시할 때는 그 의도와 변경 가능성에 대해서도 함께 명시하는 것이 좋다.

toString의 정보 API화

포맷 명시와 상관없이 toString이 반환하는 값에 포함된 정보를 얻어올 수 있는 API를 제공하는 것이 좋다. 그렇지 않으면 toString이 반환하는 값에 포함된 정보를 얻어오기 위해 문자열을 파싱해야 하는데, 이는 안정성과 성능에 문제가 생길 수 있다.

Last updated

Was this helpful?