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의 경우에서는 지역코드, 프리픽스, 가입자 번호용 접근자가 필요하다

+ Recent posts