[이펙티브 자바] 아이템 12. toString을 항상 재정의하라

June·2022년 3월 6일
0

[이펙티브자바]

목록 보기
12/72

Object의 기본 toString클래스_이름@16진수로_표시한_해시코드를 반환한다.

toString 규약

  • 사람이 읽기 쉬운 정보를 반환하라
  • 모든 하위 클래스에서 재정의하라

toString 메서드는 객체를 println, printf, 문자열 연결 연산자 (+), assert 구문에 넘길 때, 디버거가 객체를 출력할 때 자동으로 사용된다.

좋은 toString은 이 인스턴스를 포함하는 객체에서 유용하게 쓰인다.

실전에서 toString은 그 객체가 가진 주요 정보 모두를 반환하는게 좋다. 객체가 거대하거나 문자열로 표현하기 적절하지 않다면 무리가 있다.

toString을 구현할 때면 반환값의 포맷을 문서화할지 정해야 한다. 포맷을 명시하기로 했다면, 명시한 포맷에 맞는 문자열과 객체를 상호 전환할 수 있는 정적 팩터리나 생성자를 함께 제공해주면 좋다. 명시하면 명확성을 주는 것이 장점이고, 단점은 유연성을 잃는 것이다.

포맷 명시 여부와 상관없이 toString이 반환한 값에 포함된 정보를 얻어올 수 있는 API를 제공하자.
PhoneNumber 클래스는 지역 코드, 프리픽스, 가입자 번호용 접근자를 제공해야 한다. 그렇지 않으면 이 정보가 필요한 프로그래머는 toString의 반환값을 파싱해야 하는데, 성능이 나빠지고 불필요한 작업이다.

0개의 댓글