Effect Java 제2판(Joshua Bloch / Addison Wesley) 을 공부하고 정리한 내용 입니다.
10. toString 메소드는 항상 오버라이드 하자.
- 모든 서브 클래스들은 이 메소드를 오버라이드 할 것을 권한다. toString 메소드를 잘 구현하면 우리 클래스를 더욱 편하게 사용할 수 있다.
- 클래스에서 toString 메소드를 잘 구현하면, 자신의 인스턴스는 물론이고 그 인스턴스들의 참조를 갖고 있는 객체들도 toString 메소드의 장점을 가질 수 있다. 가능하다면 toString 메소드에서는 객체의 모든 중요한 정보를 반환해야 한다. 하지만 객체가 너무 크거나 하면 요약된 정보만을 반환해야 할 것이다.
- toString 메소드 반환 값의 형식을 규정 시 단점이 있다. 그 클래스가 여러 곳에서 사용될 경우, 한번 정해 놓으면 두고두고 신경 써야 한다는 것이다.
- 표현 형식의 규정 여부와는 무관하게 아무튼 그 의도를 명쾌하게 문서화해야 한다.
- 형식의 규정 여부와는 관계 없이, toString 메소드의 반환 값에 포함되는 모든 정보를 프로그램적으로 접근하는 방법을 제공하자.
/** * PhoneNumber 객체(전화번호)의 문자열 표현을 반환한다. * 문자열은 14자이며 형식은 "(XXX) YYY-ZZZZ" 이다. * 여기서 XXX는 지역번호이고, YYY는 국번호, ZZZZ은 선번호이다. * 각 영문 대문자는 한 자리의 십진수를 나타낸다. * 지정된 자리수가 다 채워지지 않은 경우는 세 부분 모드 0을 앞에 붙인다. * 예를 들어, 선번호의 값이 123이면, 문자열 표현 시 "0123"이 된다. * 지역번호의 우 괄호 다음에는 스페이스를 하나 추가한다. */ @Override public String toString() { return String.format("(%03d) %03d-%04d", areaCode, prefix, lineNumber); } // 만일 이 클래스의 객체를 문자열로 표현하는 형식을 규정하지 않는다면, 다음과 // 같이 주석을 넣는게 좋을 것이다. /** * 이 부분의 간략한 표현을 반환한다. * 반환 문자열의 형식은 정해지지 않았으므로 변결될 수 있다. * 일반적인 형태는 다음과 같다: * * "[Potion #9: type=love, smell=turpentine, look=india link]" */ @Override public String toString() { ... }
'Programs > Java' 카테고리의 다른 글
정규표현식 문법 (0) | 2014.08.20 |
---|---|
The Java Native Interface (JNI) 관련 (0) | 2014.04.21 |
모든 객체에 공통적인 메소드 - 9. equals 메소드를 오버라이드 할 때는 hashCode 메소드도 항상 같이 오버라이드 하자. (1) | 2012.11.05 |
모든 객체에 공통적인 메소드 - 8. equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자. (0) | 2012.11.02 |
객체의 생성과 소멸 - 7. 파이널라이저(finalizer)의 사용을 피하자 (1) | 2012.11.01 |