상세 컨텐츠

본문 제목

[이펙티브 자바] Item 12. toString을 항상 재정의하라 | 3장

Development Study/이펙티브 자바

by yooputer 2023. 5. 24. 11:32

본문

이펙티브 자바 3장 Item12를 요약한 내용입니다.


toString을 재정의하지 않을때의 문제점

Object의 기본 toString은 "클래스이름@해시코드"를 반환한다.

toString은 println, printf, 문자열 연결 연산자(+), assert 구문에 넘길 때, 디버거가 객체를 출력할 때 자동으로 불린다.

만약 toString을 적절히 재정의하지 않았다면 객체의 의미를 파악할 수 없는 쓸모없는 메시지만 로그에 남을 것이다.

 

만약 상위클래스에서 이미 알맞게 재정의하였으면 예외다.


좋은 toString

toString은 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보르 반환해야 한다.

그 객체가 가진 주요 정보를 모두 반환하는 것이 좋다.

즉 toString의 값을 보고 객체를 파악할 수 있어야 한다.

 


반환값의 포맷 문서화

만약 toString을 구현할 때 반환값의 포맷을 문서에 명시할 것인지 결정해야 한다.

포맷을 명시하면 표준적이고, 명확하고, 사람이 읽을 수 있게 된다.

그 값을 그대로 입출력에 사용하거나 CSV파일처럼 사람이 읽을 수 있는 데이터 객체로 저장할 수 있다. 

하지만 포맷을 한번 명시하면 그 이후 포맷을 변경하는 것이 어려워 진다.

포맷을 명시하지 않는다면 유연성을 얻고 포맷을 명시하면 효율성을 얻는다.

 

만약 포맷을 명시하기로 했다면 반환값과 객체를 상호전환할 수 있는 정적 팩터리나 생성자를 함께 제공해주면 좋다.

 

 

관련글 더보기