ITEM 12: overriding toString

Object의 κΈ°λ³Έ toString λ©”μ„œλ“œλŠ” λ‹¨μˆœνžˆ 클래슀_이름@16μ§„μˆ˜ν•΄μ‹œμ½”λ“œλ₯Ό λ°˜ν™˜ν•œλ‹€.

toString의 일반 κ·œμ•½μ€ λ‹€μŒκ³Ό κ°™λ‹€.

  • κ°„κ²°ν•˜λ©΄μ„œ μ‚¬λžŒμ΄ 읽기 μ‰¬μš΄ ν˜•νƒœμ˜ μœ μ΅ν•œ 정보λ₯Ό λ°˜ν™˜

  • λͺ¨λ“  ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ 이 λ©”μ„œλ“œ(toString)λ₯Ό μž¬μ •μ˜ν•˜λΌ

toString을 잘 κ΅¬ν˜„ν•œ ν΄λž˜μŠ€λŠ” 디버깅에 μœ μš©ν•˜λ©°, 직접 ν˜ΈμΆœν•˜μ§€ μ•Šλ”λΌλ„ λ‹€λ₯Έ μ–΄λ”˜κ°€(println, printf, λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μž, assert 에 μžλ™μœΌλ‘œ 호좜)μ—μ„œ 쓰일 것이닀.

λ§Œμ•½ toString을 μ œλŒ€λ‘œ μž¬μ •μ˜ν–ˆλ‹€λ©΄ λ‹€μŒ μ½”λ“œλ§ŒμœΌλ‘œλ„ 둜그λ₯Ό μΆ©λΆ„νžˆ 기둝할 수 μžˆλ‹€.

System.out.println(phoneNumber + "에 μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€.");

toString을 잘 μ •μ˜ν•˜λ©΄ μ»¬λ ‰μ…˜κ³Ό 같이 이 μΈμŠ€ν„΄μŠ€λ₯Ό ν¬ν•¨ν•˜λŠ” κ°μ²΄μ—μ„œ μœ μš©ν•˜κ²Œ 쓰인닀.

  • toString은 κ·Έ 객체가 가진 μ£Όμš” 정보λ₯Ό λͺ¨λ‘ λ°˜ν™˜ν•˜λŠ” 것이 μ’‹λ‹€.

ν•˜μ§€λ§Œ 객체가 κ±°λŒ€ν•˜κ±°λ‚˜ 객체의 μƒνƒœκ°€ λ¬Έμžμ—΄λ‘œ ν‘œν˜„ν•˜κΈ°μ— μ ν•©ν•˜μ§€ μ•Šλ‹€λ©΄ 무리가 μžˆλ‹€. 이런 μƒν™©μ—λŠ” μš”μ•½ 정보λ₯Ό λ‹΄λŠ” 것이 μ’‹λ‹€.

  • 포맷을 λͺ…μ‹œν•˜λ“  μ•„λ‹ˆλ“  μ˜λ„λŠ” λͺ…ν™•νžˆ λ°ν˜€μ•Όν•œλ‹€.

  • toString이 λ°˜ν™˜ν•œ 값에 ν¬ν•¨λœ 정보λ₯Ό μ–»μ–΄μ˜¬ 수 μžˆλŠ” APIλ₯Ό μ œκ³΅ν•˜μž

예λ₯Όλ“€μ–΄ μ•žμ„œ μƒμ„±ν•œ PhoneNumber ν΄λž˜μŠ€λŠ” 지역 μ½”λ“œ, ν”„λ¦¬ν•„μŠ€, κ°€μž…μž 번호용 μ ‘κ·Όμžλ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€. 그렇지 μ•Šλ‹€λ©΄ 이 정보가 ν•„μš”ν•œ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” toString의 λ°˜ν™˜κ°’μ„ νŒŒμ‹±ν•΄μ•Όν•˜λ©°, μ΄λŠ” μ„±λŠ₯이 λ‚˜λΉ μ§ˆ λΏλ”λŸ¬, ν•„μš”ν•˜μ§€ μ•Šμ€ μž‘μ—…μ΄λ‹€.

정적 μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λŠ” toString을 μ œκ³΅ν•  ν•„μš”κ°€ μ—†μœΌλ©°, λŒ€λΆ€λΆ„μ˜ μ—΄κ±°νƒ€μž…λ„ μžλ°”κ°€ 이미 μ™„λ²½ν•œ toString을 μ œκ³΅ν•˜λ―€λ‘œ λ”°λ‘œ μ œμ •μ˜ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

Last updated