[Effective Java] toString 메서드는 항상 오버라이드 하자
Effective Java 항목10의 타이틀은 "toString 메소드는 항상 오버라이드 하자" 이다.
딱 봐도 toString 메서드는 매우 중요해 보이는데 toString은 모든 객체의 부모인 java.lang.Object에 구현 되어 있다.
JavaSE 소스를 참고하니 위와 같이 구현 되어 있다. (at 사인과 16진수로 표기된 해시 코드 조합)
하지만 toString은 "간결해야 하지만 사람이 읽기 쉬운 형태의 정보 표현" 이어야 한다.(JavaSE6)
마치 배열의 경우 엘리먼트들의 문자열의 조합처럼 식별하기 쉬운 문자열을 예로 들 수 있다.
또한 toString 메서드는 println과 printf 메서드, 문자열 집합 연산자인 +, assert, 디버거 출력 등 여러 경우에 객체가 전달되면 toString 메서드가 자동으로 호출 된다.
결론적으로 toString을 잘 구현해 놓으면 예기치 않은 상황에 도움이 될 수 있다. 따라서 객체의 의도를 명확하게 문서화 또한 필요한 요소이다.
아래는 Effective Java에서 가져온 예제이다.
아래는 JavaSE6에서 가져온 HashMap.java의 toString 메서드 이다.
주제와는 동떨어진 내용이지만 위에서 언급된 String.format 메서드는 Jeus의 일부 버전에서 Servlet에 구현시 오류가 발생한다. 유용한 메서드인데 jeus 환경이라면 아쉬운 부분이다.
출처 : Effective Java
'Develop > Java' 카테고리의 다른 글
Reflection 으로 vo getter 로그 찍기 (0) | 2014.08.25 |
---|---|
[Effective Java] 모든 객체에 공통적인 메서드 그리고 hashCode (0) | 2014.03.26 |