Item 10
toString 메소드는 항상 오버라이드
하자
Chapter 3. 모든 객체에 공통적인 메소드
java.lang.Object#toString()
• … Returns a string representation of the object. In
general, the toString method returns a string that
"textually represents" this object. The result should be a
concise but informative representation that is easy for a
person to read. It is recommended that all subclasses
override this method. …
java.lang.Object#toString()
public String toString() {
return getClass().getName() + "@" +
Integer.toHexString(hashCode());
}
toString() 오버라이딩의 장점
• println(), printf(), +, assert(), 디버거 출력 등의 여러 경우
에 객체가 전달되면 toString() 호출
Person p1 = new Person("01087891074", "sungho", 23, 0);
System.out.println(p1);
Logger log = Logger.getLogger(Person.class);
log.info(p1);
ERROR : The method info(String) in the type Logger is not
applicable for the arguments (Person)
toString() 오버라이딩의 장점
• toString() 을 잘 구현하면, 자신의 인스턴스는 물론 그 인
스턴스들의 참조를 갖고 있는 객체들도 toString()의 장점
을 가질 수 있다.
Map<Object, Object> map = new HashMap<Object, Object>();
map.put("key", new Person("01087891074", "sungho", 23, Gender.MAN));
System.out.println(map);
{key=Person
[phonNum=01087891074, name=sungho, age=23, gender=MAN, getClass()=cl
ass
com.item10.Person, hashCode()=1711790973, toString()=com.item10.Person
@6607db7d]}
toString() 구현하기
• 이클립스에서 자동 생성된 toString()
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Person [phonNum=" + phonNum + ", name=" + name + ", age="
+ age + ", gender=" + gender + ", getClass()=" + getClass() +
", hashCode()=" + hashCode() + ", toString()=“ +
super.toString() + "]";
}
toString() 구현하기
• 가능하면 객체의 모든 중요한 정보를 반환해야 한다.
• 객체가 너무 크거나, 문자열로 바로 변환하기 어려운 상태
값을 갖는 경우는 요약된 정보만을 반환
– 예) Thread 메소드
• 값 클래스라면 API문서에 상세하게 규정
– API 문서의 표현으로 XML문서처럼 입출력에 사용 가
능
• 표현 형식의 규정 여부와는 무관하게 그 의도를 명쾌하게
문서화해야 한다.
cf) Thread.toString()
• System.out.println(thread);
Thread [main, 5, main]
/**
* Returns a string representation of this thread, including the
* thread's name, priority, and thread group.
*
* @return a string representation of this thread.
*/
public String toString() {
ThreadGroup group = getThreadGroup();
if (group != null) {
return "Thread[" + getName() + "," + getPriority() + "," +
group.getName() + "]";
} else {
return "Thread[" + getName() + "," + getPriority() + "," +
"" + "]";
}
}

More Related Content

PDF
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)
PDF
알고리즘 스터디(정렬) Seungdols
PDF
Binary Search
PPTX
Data Structures
PDF
[Swift] Protocol (2/2)
PDF
Hash table
PDF
알고리즘과 자료구조
PDF
2012 Dm 07
C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)
알고리즘 스터디(정렬) Seungdols
Binary Search
Data Structures
[Swift] Protocol (2/2)
Hash table
알고리즘과 자료구조
2012 Dm 07

What's hot (20)

PDF
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
PPTX
R 프로그래밍 기본 문법
PDF
BOJ10547
PPT
1.자료구조와 알고리즘(강의자료)
PPTX
엘라스틱서치 분석 이해하기 20160623
PDF
Python Programming: Function
PDF
[Swift] Data Structure - Heap
PPTX
파이썬+Json+이해하기 20160301
PDF
Example
PPTX
0327.web&ruby&rails
PDF
정렬(버블정렬,선택정렬,삽입정렬)
PDF
2.linear regression and logistic regression
PPTX
Clean code(02)
PPTX
문과생 대상 파이썬을 활용한 데이터 분석 강의
PPTX
빠르게 활용하는 파이썬3 스터디(ch1~4)
PPTX
[새차원, 코틀린(Kotlin) 강좌] 6. Packages, Return and Jumps
PPTX
Python 활용: 이미지 처리와 데이터 분석
PPTX
Python 스터디
PPTX
R 프로그램의 이해와 활용 v1.1
PPTX
R과 기초통계 : 02.기술통계-자료나타내기
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
R 프로그래밍 기본 문법
BOJ10547
1.자료구조와 알고리즘(강의자료)
엘라스틱서치 분석 이해하기 20160623
Python Programming: Function
[Swift] Data Structure - Heap
파이썬+Json+이해하기 20160301
Example
0327.web&ruby&rails
정렬(버블정렬,선택정렬,삽입정렬)
2.linear regression and logistic regression
Clean code(02)
문과생 대상 파이썬을 활용한 데이터 분석 강의
빠르게 활용하는 파이썬3 스터디(ch1~4)
[새차원, 코틀린(Kotlin) 강좌] 6. Packages, Return and Jumps
Python 활용: 이미지 처리와 데이터 분석
Python 스터디
R 프로그램의 이해와 활용 v1.1
R과 기초통계 : 02.기술통계-자료나타내기
Ad

Viewers also liked (7)

PPTX
item12. Comparable 인터페이스의 구현을 고려하자
PPTX
Item 19. 타입을 정의할 때만 인터페이스를 사용하자.
PPTX
Item 24. 컴파일 경고 메시지가 없게 하자
PPTX
Item 26. 제네릭 타입을 애용하자
PPTX
item15. 가변성을 최소화하자
PPTX
Item 30 int 상수 대신 enum을 사용하자
PPTX
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
item12. Comparable 인터페이스의 구현을 고려하자
Item 19. 타입을 정의할 때만 인터페이스를 사용하자.
Item 24. 컴파일 경고 메시지가 없게 하자
Item 26. 제네릭 타입을 애용하자
item15. 가변성을 최소화하자
Item 30 int 상수 대신 enum을 사용하자
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
Ad

Similar to Item10. toString 메소드는 항상 오버라이드 하자 (20)

PPTX
파이썬정리 20160130
PPT
강의자료3
PDF
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
KEY
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
PDF
Java advancd ed10
PDF
[NHN NEXT] Java 강의 - Week4
PDF
Javascript개발자의 눈으로 python 들여다보기
PDF
나에 첫번째 자바8 람다식 지앤선
PDF
10장 문자열클래스와파일클래스
PDF
5장 객체와클래스
PDF
Python vs Java @ PyCon Korea 2017
PPTX
Swift 0x17 generics
PDF
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
PDF
Scala
PPT
강의자료4
PDF
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 씹고 뜯고 맛보고 즐기는 스트림 API(박용권)
PDF
10장 문자열 클래스와 파일 클래스
PPTX
파이썬 문자열 이해하기
PPTX
파이썬 문자열 이해하기
PDF
4. stack
파이썬정리 20160130
강의자료3
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
Java advancd ed10
[NHN NEXT] Java 강의 - Week4
Javascript개발자의 눈으로 python 들여다보기
나에 첫번째 자바8 람다식 지앤선
10장 문자열클래스와파일클래스
5장 객체와클래스
Python vs Java @ PyCon Korea 2017
Swift 0x17 generics
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
Scala
강의자료4
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 씹고 뜯고 맛보고 즐기는 스트림 API(박용권)
10장 문자열 클래스와 파일 클래스
파이썬 문자열 이해하기
파이썬 문자열 이해하기
4. stack

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

  • 1. Item 10 toString 메소드는 항상 오버라이드 하자 Chapter 3. 모든 객체에 공통적인 메소드
  • 2. java.lang.Object#toString() • … Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method. … java.lang.Object#toString() public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
  • 3. toString() 오버라이딩의 장점 • println(), printf(), +, assert(), 디버거 출력 등의 여러 경우 에 객체가 전달되면 toString() 호출 Person p1 = new Person("01087891074", "sungho", 23, 0); System.out.println(p1); Logger log = Logger.getLogger(Person.class); log.info(p1); ERROR : The method info(String) in the type Logger is not applicable for the arguments (Person)
  • 4. toString() 오버라이딩의 장점 • toString() 을 잘 구현하면, 자신의 인스턴스는 물론 그 인 스턴스들의 참조를 갖고 있는 객체들도 toString()의 장점 을 가질 수 있다. Map<Object, Object> map = new HashMap<Object, Object>(); map.put("key", new Person("01087891074", "sungho", 23, Gender.MAN)); System.out.println(map); {key=Person [phonNum=01087891074, name=sungho, age=23, gender=MAN, getClass()=cl ass com.item10.Person, hashCode()=1711790973, toString()=com.item10.Person @6607db7d]}
  • 5. toString() 구현하기 • 이클립스에서 자동 생성된 toString() /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Person [phonNum=" + phonNum + ", name=" + name + ", age=" + age + ", gender=" + gender + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=“ + super.toString() + "]"; }
  • 6. toString() 구현하기 • 가능하면 객체의 모든 중요한 정보를 반환해야 한다. • 객체가 너무 크거나, 문자열로 바로 변환하기 어려운 상태 값을 갖는 경우는 요약된 정보만을 반환 – 예) Thread 메소드 • 값 클래스라면 API문서에 상세하게 규정 – API 문서의 표현으로 XML문서처럼 입출력에 사용 가 능 • 표현 형식의 규정 여부와는 무관하게 그 의도를 명쾌하게 문서화해야 한다.
  • 7. cf) Thread.toString() • System.out.println(thread); Thread [main, 5, main] /** * Returns a string representation of this thread, including the * thread's name, priority, and thread group. * * @return a string representation of this thread. */ public String toString() { ThreadGroup group = getThreadGroup(); if (group != null) { return "Thread[" + getName() + "," + getPriority() + "," + group.getName() + "]"; } else { return "Thread[" + getName() + "," + getPriority() + "," + "" + "]"; } }