이펙티브 자바 3장 Item12를 요약한 내용입니다.
Object의 기본 toString은 "클래스이름@해시코드"를 반환한다.
toString은 println, printf, 문자열 연결 연산자(+), assert 구문에 넘길 때, 디버거가 객체를 출력할 때 자동으로 불린다.
만약 toString을 적절히 재정의하지 않았다면 객체의 의미를 파악할 수 없는 쓸모없는 메시지만 로그에 남을 것이다.
만약 상위클래스에서 이미 알맞게 재정의하였으면 예외다.
toString은 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보르 반환해야 한다.
그 객체가 가진 주요 정보를 모두 반환하는 것이 좋다.
즉 toString의 값을 보고 객체를 파악할 수 있어야 한다.
만약 toString을 구현할 때 반환값의 포맷을 문서에 명시할 것인지 결정해야 한다.
포맷을 명시하면 표준적이고, 명확하고, 사람이 읽을 수 있게 된다.
그 값을 그대로 입출력에 사용하거나 CSV파일처럼 사람이 읽을 수 있는 데이터 객체로 저장할 수 있다.
하지만 포맷을 한번 명시하면 그 이후 포맷을 변경하는 것이 어려워 진다.
포맷을 명시하지 않는다면 유연성을 얻고 포맷을 명시하면 효율성을 얻는다.
만약 포맷을 명시하기로 했다면 반환값과 객체를 상호전환할 수 있는 정적 팩터리나 생성자를 함께 제공해주면 좋다.
[이펙티브 자바] Item 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 | 4장 (0) | 2024.01.15 |
---|---|
[이펙티브 자바] Item 13. clone 재정의는 주의해서 진행하라 | 3장 (0) | 2023.09.11 |
[이펙티브 자바] Item 11. equals를 재정의하려거든 hashCode도 재정의하라 | 3장 (2) | 2023.05.10 |
[이펙티브 자바] Item 10. equals는 일반규약을 지켜 재정의하라 | 3장 (0) | 2023.04.26 |
[이펙티브 자바] Item 9. try-finally 보다 try-with-resources를 사용하라 | 2장 (0) | 2023.04.12 |