[Effective Java] toString을 항상 재정의하라

들어가며

toString의 규약은 모든 하위 클래스에서 이 메소드를 재정의하라고 한다. toString의 일반 규약에 따르면 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환해야 한다. toString 메소드는 객체를 출력하거나 문자열 연결 연산자를 사용할때 혹은 assert나 디버거가 객체를 출력할 때 자동으로 불린다. 결국 toString을 재정의하지 않으면 쓸모없는 메세지만 로그에 남는다.

toString은 그 객체가 가진 주요 정보 모두를 반환하는게 좋다. 하지만 객체가 거대하거나 객체의 상태가 문자열로 표현하기에 적합하지 않다면 무리가 있다. 이런 상황에는 요약정보를 담아야 한다.

정적 유틸리티 클래스는 toString을 제공할 의무가 없다. enum 클래스는 자바가 toString을 제공하니 따로 재정의하지 않아도 된다

AutoValue 프레임워크는 toString도 생성해준다. 하지만 클래스의 의미까지는 파악하지 못한다. 하지만 비록 자동 생성에 적합하지는 않더라도 객체의 값에 관해 아무것도 알려주지 않는 Object의 toString보다는 자동 생성된 toString이 훨씬 유용하다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/06/Languages/Effective%20JAVA/item12/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.