toString
을 항상 재정의하라Object Class의 toString()
은 다음과 같은 형식으로 객체를 String으로 변환한다.
getClass().getName() + '@' + Integer.toHexString(hashCode());
즉, 클래스명@16진수의 해쉬코드
로 변환한다는 뜻이다.
toString()
재정의의 필요성toString()
은 언제 이용될까?
그 외 여러가지 상황에서 toString()
이 이용될 수 있겠지만, Object.toString()
은 우리가 원하는 세부 정보를 포함하지 않는다. 그렇기 때문에, 상황에 따라서 toString()
은 적절하게 재정의 되어야한다.
toString()
을 잘 설계하는 방법toString()
은 용도에 맞게 필요한 모든 필드들을 기술해야한다.
만약 String으로 정보를 표현하기 어렵다면, 해당 정보를 가시적으로 확인할 수 있는 요약정보를 제공해야한다.
toString()
의 반환 값을 파싱하여 값을 가져오는 것은 비효율적이므로, getter API
를 따로 선언해주는것이 좋다.
toString()
의 반환 값에 대한 의도를 분명하게 밝혀야한다.
반환 결과를 포맷화할 것인지를 정해야한다.
toString()
항상 toString()
은 이러한 형식으로 인스턴스를 String으로 변환한다는 형식을 정해둔 방식이다.
장점
단점
toString()
상세 형식이 정해지지 않고 추후 변경될 수도 있다.
장점
단점
toString()
의 반환값에 의존적이지 않아야한다.