Closed okhee closed 2 years ago
Object.toString : 해당 오브젝트를 잘 나타내는 문자열 표현을 반환
Object.toString
Object.toString 의 기본 구현: 클래스명에 16진수로 표시한 해시코드만 알려줌.
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
ex) PhoneNumber@adbbd → 이런 형태보단.. 실제로 이 인스턴스가 가지고 있는 값을 보여주는게 더 유익하지 않을까? → 이런 경우는 전화번호를 바로 보여주는 것이 좋아보임.
PhoneNumber@adbbd
재정의를 잘 했다면 아래와 같은 간단한 코드만으로 충분한 로그를 남길 수 있음
System.out.println(phoneNumber + "에 연결할 수 없습니다.");
실전에서는 toString은 그 객체가 가진 정보를 모두 반환하는 것이 좋음. 가능하면 객체의 값을 모두 나타내는 것이 좋겠지만, 상태가 너무 많다면 요약해서 보여주는 것도 좋음.
서울_거주지_전화번호부[1487536개]
Thread[main,5,main]
반환값의 포맷을 문서화 할지는 개발자의 선택.
포맷을 명시하든 아니든, 의도는 분명하게 밝혀야 한다!
포맷을 정확하게 명시하지 않기로 했다면, 아래처럼 바뀔 수 있음을 분명히 하자.
/** * 이 약물에 관한 대략적인 설명을 반환한다. * 다음은 이 설명의 일반적인 형태이나, * 상세 형식은 정해지지 않았으며 향후 변경될 수 있다. * * "[약물 #9: 유형=사랑, 냄새=테레빈유, 겉모습=먹물]" */ @Override public String toString() { ... }
포맷에 명시하든 아니든, toString에 포함된 정보를 얻을 수 있는 API를 제공하자
Item 12. toString을 항상 재정의 하라
toString은 모든 정보를 반환하는 것이 좋다.
Object.toString
: 해당 오브젝트를 잘 나타내는 문자열 표현을 반환Object.toString
의 기본 구현: 클래스명에 16진수로 표시한 해시코드만 알려줌.ex)
PhoneNumber@adbbd
→ 이런 형태보단.. 실제로 이 인스턴스가 가지고 있는 값을 보여주는게 더 유익하지 않을까? → 이런 경우는 전화번호를 바로 보여주는 것이 좋아보임.재정의를 잘 했다면 아래와 같은 간단한 코드만으로 충분한 로그를 남길 수 있음
실전에서는 toString은 그 객체가 가진 정보를 모두 반환하는 것이 좋음. 가능하면 객체의 값을 모두 나타내는 것이 좋겠지만, 상태가 너무 많다면 요약해서 보여주는 것도 좋음.
서울_거주지_전화번호부[1487536개]
Thread[main,5,main]
toString 반환값의 포맷?
반환값의 포맷을 문서화 할지는 개발자의 선택.
포맷을 명시하든 아니든, 의도는 분명하게 밝혀야 한다!
포맷을 정확하게 명시하지 않기로 했다면, 아래처럼 바뀔 수 있음을 분명히 하자.
포맷에 명시하든 아니든, toString에 포함된 정보를 얻을 수 있는 API를 제공하자
ToStringBuilder