Item 12 : toString을 항상 재정의하라
2021. 7. 12. 00:21
toString의 재정의는 편의성과 연관된다.
toString이 없다면 사용자는 객체의 정보를 출력하는데 있어서 불편함을 겪을것이다.
(클래스풀네임@해시코드가 출력된다)
실전에서 주로 toString으로 객체가 가진 주요 정보 모두를 반환하기 사용하는데
저자는 포맷을 명시하든 아니든 의도를 명확히 밝혀야 한다는 주의사항을 말하고 있다.
예를 들면
/**
*이 전화번호의 문자열 표현을 반환한다.
*이 문자열은 "XXX-YYY-ZZZZ" 형태의 12글자로 구성된다.
*XXX는 지역코드 YYY는 프리픽스, ZZZZ는 가입자 번호다.
*각각의 대문자는 10진수 숫자 하나를 나타낸다.
*
*전화번호의 각 부분의 값이 너무 작아서 자릿수를 채울 수 없다면,
*앞에서부터 0으로 채워나간다. 에컨대 가입자 번호가 123이라면
*전화번호의 마지막 네 문자는 "0123"이 된다.
*/
@Override
public String toString(){
return String.format("%03d-%03d-%04d", areaCode, prefix, lineNum);
}
이런식으로 포맷을 정해놓으면 이 포맷에 너무 얽매이게 되며
추후에 유지보수가 어려워진다.
그렇기 때문에 포맷 명시 여부와 상관없이 toString이 반환한 값에 포함된 정보를 얻어올 수 있는 API를 제공해야 한다.
위의 toString의 경우에서는 지역코드, 프리픽스, 가입자 번호용 접근자가 필요하다
'책 > 이펙티브자바' 카테고리의 다른 글
Item 14 : Comparable을 구현할지 고려하라 (0) | 2021.07.13 |
---|---|
Item 13 : clone 재정의는 주의해서 진행하라 (0) | 2021.07.12 |
Item 11 : equals를 재정의하려거든 hashCode도 재정의하라 (0) | 2021.07.11 |
Item 10 : equals는 일반 규약을 지켜 재정의하라 (0) | 2021.07.10 |
Item 9 : try-finally 보다는 try-with-resources를 사용하라 (0) | 2021.07.09 |