12. 유용한 정보를 가지도록 toString을 재정의하자
자바에서 가장 최상위 클래스인 Object
클래스의 메서드
toString
메서드는 객체의 문자 정보 즉, 객체를 문자열로 표현한 값 을 리턴함
Object
의 toString
메서드 리턴값은 클래스명@16진수해시코드 로 구성되어 별 값어치가 없는 정보가 반환됨
디버깅을 할 때나 println
구문에 객체를 넘길 때 등 자동으로 toString
이 호출됨
만약 toString
을 재정의하지 않는다면 쓸데없는 정보가 출력되기 때문에 간결하고 유용한 정보를 리턴하도록 재정의해야 함
public class WinningLotto {
private Lotto lotto ;
private LottoNumber lottoNumber ;
}
System .out .println (winningLotto );
출력: WinningLotto @ 55 b0dcab
@ Override
public String toString () {
return "당첨 번호{" +
"로또 번호=" + lotto +
", 보너스 번호=" + bonus +
"}" ;
}
출력: 당첨 번호{로또 번호=[1 , 2 , 3 , 4 , 5 , 6 ], 보너스 번호=7 }
재정의하지 않은 경우보다 훨씬 유용한 정보가 출력됨
주요 정보를 모두 반환하자
toString
을 재정의할 때 가능한 객체 스스로를 완벽히 설명하는 문자열이 될 수 있도록 주요 정보를 모두 반환하는 것이 좋음
만약 정확하게 설명이 안된다면 요약 정보를 담아야 함
toString
에 포함된 정보를 얻어올 수 있도록 API를 제공하자
위의 예시에서는 로또 번호와 보너스 번호용 접근자를 제공해야 함
그렇지 않으면 이 정보가 필요한 프로그래머는 toString
의 반환값을 파싱해서 사용해야 함
toString
을 제공하지 않아도 되는 경우
정적 유틸리티 클래스
정적이기 때문에 객체의 상태 정보를 담을 필요가 없음
따라서 toString
을 제공하지 않아도 됨
열거 타입
자바에서 이미 완벽한 toString
을 제공하기 때문에 굳이 우리가 만들지 않아도 됨