개발 공부 기록하기/01. JAVA & Kotlin

짧은 코멘트와 함께하는 이펙티브 자바) #12 toString을 항상 재정의하라

lannstark 2020. 10. 1. 18:45

짧은 코멘트

  1. lombok의 @ToString을 사용하면 Object의 toString을 쉽게 재정의할 수 있다.
  2. 모든 객체에 @ToString을 붙일 필요는 없지만, DTO에 붙이는 것은 디버깅시 꽤 유용했던 경험이 많다.

toString을 항상 재정의 하라

Object 클래스의 기본 메소드 toString은 클래스이름@해시코드를 반환한다. 때문에 모든 클래스의 toString은 항상 재정의 하는 것이 좋다. 심지어 Object 클래스의 tostring의 규약은 “모든 하위 클래스에서 이 메소드를 재정의하라”이기도 하다.

toString은 그 객체가 가진 주요 정보 모두를 반환하는 게 좋다. 또한 toString을 작성할 때 의도를 명확히 밝혀야 한다.

포맷 명시

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

포맷을 문서화하기로 정했다면, 명시에 포맷에 맞는 문자열과 객체를 상호전환할 수 있는 정적 팩토리나 생성자를 함께 제공해 주면 좋다. 자바 플랫폼의 많은 값 클래스가 따르는 방식이기도 하다.

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