Book/Effective Java

[ITEM 12] toString을 항상 재정의하라

kkkkkkkkkkkk 2022. 7. 13. 02:06

Object의 기본 toString 메서드가 해당 클래스의 적합한 문자열을 반환하는 경우는 거의 없다.

이 메서드는 단순히 클래스이름@16진수로표현한해시코드 를 반환 할 뿐이다.

 

toString의 일반 규약

  • ‘간결하면서 사람이 읽기 쉬운 형태의 유익한 정보' 를 반환해야 한다.
  • ‘모든 하위 클래스에서 이 메서드를 재정의하라'

 

객체가 가지고 있는 주요 정보들을 모두 반환하는 것이 좋고 toString을 잘 구현한 클래스는 사용하기에 쉽고 디버깅하기 쉽다.

toString을 구현할 때면 반환값의 포맷을 문서화할지 정해야 한다.

  • 포맷을 명시하면 그 객체는 표준적이고, 명확하고, 사람이 읽을 수 있게 된다.
  • 정적 팩터리나 생성자를 함께 제공하면 좋다.
  • 단점
    • 명확성을 얻을 수 있고 코드를 수정해야하는 유연성을 잃는다.

 

 

포맷 명시 여부와 상관없이 toString이 반환한 값에 포함된 정보를 얻어올 수 있는 API를 제공하라.

해당 클래스의 필드들을 접근할 수 있는 접근자를 제공해야 한다는 말이다. 접근자가 없다면 toString을 파싱하여 성능이 나빠지고 필요하지도 않는 작업을 가져올 수 있다.