java.lang.Object 클래스가 toString 메서드를 제공하긴 하지만, 이 메서드가 반환하는 문자열은 일반적으로는 사용자가 보려는 문자열이 아니다. 클래스 이름 다음에 @ 기호와 16진수로 표시된 해시 코드가 붙은 문자열의 형태이다.
"toString() 메소드는 사람이 읽기 쉽도록 간략하지만 유용한 정보를 제공해야 한다"
라고 명시가 되어있다. 앞서 말한 형태는 일반적으로 해당하지 않다고 생각이 된다. 그리고 toString을 잘 만들어 놓으면 클래스를 좀 더 쾌적하게 사용할 수 있다. toString 메서드는 println이나 printf 같은 함수 등에 객체가 전달되면 자동으로 호출되므로 편리하게 사용할 수 있다.
가능하다면 toString 메서드는 객체 내의 중요 정보를 전부 담아 반환하면 좋지만, 객체가 너무 커서 문자열로 변환하기 적합하지 않다면 요약정보로 작성하여도 된다. toString 메서드를 재정의 할 때 중요하게 생각해야 할 부분이 있다
toString이 반환하는 문자열의 형식을 문서의 반환할 것인가 , 말 것 인가의 문제
문자열을 형식에 규정해두면, 문자열로부터 객체를 만드는 정적 팩터리 메서드나 생성자 등을 이용하여 편리하게 사용할 수 있지만 , 해당 클래스가 널리 쓰인다고 가정했을 때 규정을 바꾸지 못한다는 단점이 있다. 이미 수많은 프로그래머가 문자열을 파싱하여 사용하고 있을 터인데 , 문자열의 규정을 바꿔버리면 이 문자열을 이용했던 수많은 프로그램이 오동작하게 될 것이기 때문이다.
toString 메서드는 어떤 의도로 작성되었는지 문서에 남겨두어야 한다. 그리고 toString에 포함되어 반환되는 정보들은 전부 프로그래밍을 통해서 가져올 수 있도록 하여야 한다(메서드를 통하여..)
'개발서적 > 이펙티브자바' 카테고리의 다른 글
[모든 객체의 공통 메서드]규칙12.Comparable 구현을 고려하라 (0) | 2017.04.20 |
---|---|
[모든 객체의 공통 메서드]규칙11.clone을 재정의할 때는 신중하라 (0) | 2017.04.19 |
[모든 객체의 공통 메서드]규칙9.equals를 재정의 할 때는 반드시 hashCode도 재정의하라 (0) | 2017.04.19 |
[모든 객체의 공통 메서드]규칙8.equals를 재정의할 때는 일반 규약을 따르라. (0) | 2017.04.18 |
[객체의 생성과 삭제]규칙7.종료자 사용은 피하라 (0) | 2017.04.17 |