언어/Effective Java

이펙티브 자바 Item 12 - toString은 항상 재정의하라

now0204 2024. 5. 29. 14:25

 

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

 

toString 규약 

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

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

 

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

 


toString() 메서드 재정의 시 주의점 

 

  • 객체가 가진 주요 정보는 모두 보여주는 것이 좋다.
  • 정보가 너무 많을 때는 간단히 요약된 정보를 보여줄 수도 있다. 
  • 포맷을 명시하기로 했으면, 명시한 포맷에 맞는 문자열과 객체를 상호전환 할 수 있는 정적 팩토리나 생성자 함께 제공하면 좋다. 
  • toString이 반환한 값에 포함된 정보를 얻어올 수 있는 API를 제공하자 (Getter같은거 만들어 두자는 뜻)

toString 재정의가 필요 없는 경우

 

- 정적 유틸리트 클래스 

- 열거 타입 : 이미 완벽한 toString 제공함