반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 "toString 메소드는 항상 오버라이드 하자" 를 주제로 이야기 해보겠습니다.
이 글은 "Effective Java" 를 정리한 내용입니다.
- java.lang.Object 클래스는 toString 메소드를 구현하고 있다.
그러나 그 메소드에서 반환하는 문자열은 클래스 사용자가 원하는 형태가 아니다.
( 보통 클래스명@hashCode 형태 )
그러나 그 메소드에서 반환하는 문자열은 클래스 사용자가 원하는 형태가 아니다.
( 보통 클래스명@hashCode 형태 )
- toString() 은 println, printf, 문자열 접합 연산자 +, assert, debugger 출력 등에 쓰일 경우 자동 호출된다.
toString 도 보편적 계약이 있어?
- 응. "간결해야 하고, 사람이 읽기 쉬운 형태의 정보를 표현해야 한다" 라는 계약이 있어.
- 추가적으로, "모든 서브 클래스들은 이 메소드를 오버라이드 할 것을 권한다." 라고 표기되어 있지.
잘 구현하면 엄청 편하게 사용되기 때문이지.
toString 메소드는 그럼 어떻게 오버라이드 해?
- 가능하다면 toString 메소드에서는 객체의 모든 중요한 정보를 반환해야 해.
- 값 (Value) 들을 가진 클래스라면 API 문서를 규정하는 것이 좋은데,
API 문서의 표현 형식 규정을 잘못하면, 차기 버전에서 정보를 추가한다던가 또는 형식을 개선하는데
유연성이 없어지지. 그래서 표현 형식 규정 여부와는 무관하게 그 의도를 명쾌하게 문서화하는 것이 좋아.
API 문서의 표현 형식 규정을 잘못하면, 차기 버전에서 정보를 추가한다던가 또는 형식을 개선하는데
유연성이 없어지지. 그래서 표현 형식 규정 여부와는 무관하게 그 의도를 명쾌하게 문서화하는 것이 좋아.
- 추가적으로, toString 메소드의 반환 값에 포함되는 모든 정보는 프로그램적으로 접근하는 방법이 존재해야해.
도움이 되셨다면 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 디자인 패턴, 리펙토링' 카테고리의 다른 글
[Design Pattern/Java] Comparable 인터페이스의 구현을 고려하자. (0) | 2012.03.13 |
---|---|
[Design Pattern/Java] clone 메소드는 신중하게 오버라이드 하자. (0) | 2012.03.12 |
[Clean Code] 냄새와 발견법 (4) | 2012.02.28 |
[Clean Code] 클래스 (0) | 2012.02.28 |
[Clean Code] 형식 (0) | 2012.02.28 |
댓글