Effect Java 제2판(Joshua Bloch / Addison Wesley) 을 공부하고 정리한 내용 입니다.

10. toString 메소드는 항상 오버라이드 하자.

  • 모든 서브 클래스들은 이 메소드를 오버라이드 할 것을 권한다. toString 메소드를 잘 구현하면 우리 클래스를 더욱 편하게 사용할 수 있다.
  • 클래스에서 toString 메소드를 잘 구현하면, 자신의 인스턴스는 물론이고 그 인스턴스들의 참조를 갖고 있는 객체들도 toString 메소드의 장점을 가질 수 있다. 가능하다면 toString 메소드에서는 객체의 모든 중요한 정보를 반환해야 한다. 하지만 객체가 너무 크거나 하면 요약된 정보만을 반환해야 할 것이다.
  • toString 메소드 반환 값의 형식을 규정 시 단점이 있다. 그 클래스가 여러 곳에서 사용될 경우, 한번 정해 놓으면 두고두고 신경 써야 한다는 것이다.
  • 표현 형식의 규정 여부와는 무관하게 아무튼 그 의도를 명쾌하게 문서화해야 한다.
  • 형식의 규정 여부와는 관계 없이, toString 메소드의 반환 값에 포함되는 모든 정보를 프로그램적으로 접근하는 방법을 제공하자.

 

 

 	/**
	 * PhoneNumber 객체(전화번호)의 문자열 표현을 반환한다.
	 * 문자열은 14자이며 형식은 "(XXX) YYY-ZZZZ" 이다.
	 * 여기서 XXX는 지역번호이고, YYY는 국번호, ZZZZ은 선번호이다.
	 * 각 영문 대문자는 한 자리의 십진수를 나타낸다.
	 * 지정된 자리수가 다 채워지지 않은 경우는 세 부분 모드 0을 앞에 붙인다.
	 * 예를 들어, 선번호의 값이 123이면, 문자열 표현 시 "0123"이 된다.
	 * 지역번호의 우 괄호 다음에는 스페이스를 하나 추가한다.
	 */
	@Override
	public String toString() {
		return String.format("(%03d) %03d-%04d", 
							areaCode, prefix, lineNumber);
	}
	
	// 만일 이 클래스의 객체를 문자열로 표현하는 형식을 규정하지 않는다면, 다음과
	// 같이 주석을 넣는게 좋을 것이다.
	
	/**
	 * 이 부분의 간략한 표현을 반환한다.
	 * 반환 문자열의 형식은 정해지지 않았으므로 변결될 수 있다.
	 * 일반적인 형태는 다음과 같다:
	 * 
	 * "[Potion #9: type=love, smell=turpentine, look=india link]"
	 */
	@Override
	public String toString() { ... }	
Posted by outliers
,