Object의 기본 toString 메서드가 해당 클래스의 적합한 문자열을 반환하는 경우는 거의 없다.
이 메서드는 단순히 클래스이름@16진수로표현한해시코드 를 반환 할 뿐이다.
toString의 일반 규약
- ‘간결하면서 사람이 읽기 쉬운 형태의 유익한 정보' 를 반환해야 한다.
- ‘모든 하위 클래스에서 이 메서드를 재정의하라'
객체가 가지고 있는 주요 정보들을 모두 반환하는 것이 좋고 toString을 잘 구현한 클래스는 사용하기에 쉽고 디버깅하기 쉽다.
toString을 구현할 때면 반환값의 포맷을 문서화할지 정해야 한다.
- 포맷을 명시하면 그 객체는 표준적이고, 명확하고, 사람이 읽을 수 있게 된다.
- 정적 팩터리나 생성자를 함께 제공하면 좋다.
- 단점
- 명확성을 얻을 수 있고 코드를 수정해야하는 유연성을 잃는다.
포맷 명시 여부와 상관없이 toString이 반환한 값에 포함된 정보를 얻어올 수 있는 API를 제공하라.
해당 클래스의 필드들을 접근할 수 있는 접근자를 제공해야 한다는 말이다. 접근자가 없다면 toString을 파싱하여 성능이 나빠지고 필요하지도 않는 작업을 가져올 수 있다.
'Book > Effective Java' 카테고리의 다른 글
[Item 16] public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 (0) | 2022.07.21 |
---|---|
[Item 15] 클래스와 멤버의 접근 권한을 최소화하라 (0) | 2022.07.20 |
[Item 14] Comparable을 구현할지 고려하라 (0) | 2022.07.19 |
[ITEM 13] clone 재정의는 주의해서 진행해라 (0) | 2022.07.13 |
[ITEM 11] equals를 재정의하려거든 hashCode도 재정의하라 (0) | 2022.07.10 |
[ITEM 10] equals는 일반 규약을 지켜 재정의하라 (0) | 2022.07.10 |
[Book] ITEM 9) try-finally 대신 try-with-resource 를 사용하라 (0) | 2022.03.19 |
[Book] ITEM 8) finalizer 와 cleaner는 피하라 (0) | 2022.03.07 |