brunch

You can make anything
by writing

C.S.Lewis

by 이승현 Mar 06. 2018

모든 객체에 공통적인 메서드

#10 toString 메서드는 항상 오버라이드 하자

Effective Java - 모든 객체에 공통적인 메서드


#10 toString 메서드는 항상 오버라이드 하자


#01 Object toString()


Object 클래스에 기본적으로 구현되어 있는 toString 메서드는 위에서 처럼 클래스 이름과 "@" 그리고 hashCode 메서드에서 반환되는 값으로 구성되어 있습니다.


기본 toString 메서드를 실행하면 아래와 같은 String 값이 반환됩니다.

chapter03.item10.PhoneNumber@963c2


toString 메서드의 보편적 계약사항에 대해 알아보겠습니다.




toString 보편적 계약


간결해야 하지만 사람이 읽기 쉬운 형태의 정보로 표현되어야 합니다.

모든 서브 클래스들은 이 메서드를 오버라이드 하길 권장합니다.


아래와 같이 printf, println 메서드, + 연산자, assert, 디버거 출력 등 객체들이 전달되면 자동으로 toString 메서드가 호출됩니다.

#02 toString() 자동 호출


사실 성능상에 이슈가 생기기보다는 이는 알아보기가 힘듭니다.

만약 toString 메서드를 아래와 같이 오버라이드 한다면, 전보다는 사람이 읽기 훨씬 더 쉬운 형태입니다.

#03 toString() 오버라이드




toString 작성


가능하다면 객체의 모든 중요한 정보를 반환해야 합니다.

하지만 객체가 너무 크거나, 문자열로 바로 변환하기 어려운 경우에는 비효율적입니다.

이럴 때는 요약된 정보만 반환하는 게 좋습니다.

아래와 같이 반환할 수 있습니다.

Manhattan white pages (11234342 listings)
Thread [main, 5, work]


그리고 toString 메서드의 의도를 명쾌하게 문서화해야 합니다.




매거진의 이전글 모든 객체에 공통적인 메서드
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari