Study/Effective Java

์•„์ดํ…œ12. toString์„ ํ•ญ์ƒ ์žฌ์ •์˜ํ•˜๋ผ

sw_develop 2023. 5. 7. 16:28

๐Ÿ“์ƒํ™ฉ

  • Object์˜ ๊ธฐ๋ณธ toString ๋ฉ”์„œ๋“œ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค์— ์ ํ•ฉํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์Œ
    • ๋‹จ์ˆœํžˆ ํด๋ž˜์Šค_์ด๋ฆ„@16์ง„์ˆ˜๋กœ_ํ‘œ์‹œํ•œ_ํ•ด์‹œ์ฝ”๋“œ ๋ฅผ ๋ฐ˜ํ™˜ํ•จ
  • toString์˜ ์ผ๋ฐ˜ ๊ทœ์•ฝ
    • '๊ฐ„๊ฒฐํ•˜๋ฉด์„œ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ์˜ ์œ ์ตํ•œ ์ •๋ณด'๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ
    • ๋ชจ๋“  ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•จ
  • ์žฅ์  - toString์„ ์ž˜ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์‰ฌ์›€
    • toString ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด๋ฅผ println, printf, assert ๊ตฌ๋ฌธ์— ๋„˜๊ธธ ๋•Œ, ํ˜น์€ ๋””๋ฒ„๊ฑฐ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ
      • ์ฆ‰, ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋‹ค๋ฅธ ์–ด๋”˜๊ฐ€์—์„œ ์“ฐ์ผ ๊ฒƒ์ž„
    • toString์„ ์ œ๋Œ€๋กœ ์žฌ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์“ธ๋ชจ์—†๋Š” ๋ฉ”์‹œ์ง€๋งŒ ๋กœ๊ทธ์— ๋‚จ์„ ๊ฒƒ์ž„

 

๐Ÿ“๋ฐฉ๋ฒ•

1. toString์€ ๊ทธ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ์ฃผ์š” ์ •๋ณด ๋ชจ๋‘๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฒŒ ์ข‹์Œ

2. ํฌ๋งท์„ ๋ช…์‹œํ•˜๋“  ์•„๋‹ˆ๋“  ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ๋ฐํ˜€์•ผ ํ•จ

/**
 * ์ด ์ „ํ™”๋ฒˆํ˜ธ์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
 * ์ด ๋ฌธ์ž์—ด์€ "XXX-YYY-ZZZZ" ํ˜•ํƒœ์˜ 12๊ธ€์ž๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
 * XXX๋Š” ์ง€์—ญ ์ฝ”๋“œ, YYY๋Š” ํ”„๋ฆฌํ”ฝ์Šค, ZZZZ๋Š” ๊ฐ€์ž…์ž ๋ฒˆํ˜ธ๋‹ค.
 * ๊ฐ๊ฐ์˜ ๋Œ€๋ฌธ์ž๋Š” 10์ง„์ˆ˜ ์ˆซ์ž ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
 *
 * ์ „ํ™”๋ฒˆํ˜ธ์˜ ๊ฐ ๋ถ€๋ถ„์˜ ๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘์•„์„œ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ฑ„์šธ ์ˆ˜ ์—†๋‹ค๋ฉด,
 * ์•ž์—์„œ๋ถ€ํ„ฐ 0์œผ๋กœ ์ฑ„์›Œ๋‚˜๊ฐ„๋‹ค. ์˜ˆ์ปจ๋Œ€ ๊ฐ€์ž…์ž ๋ฒˆํ˜ธ๊ฐ€ 123์ด๋ผ๋ฉด
 * ์ „ํ™”๋ฒˆํ˜ธ์˜ ๋งˆ์ง€๋ง‰ ๋„ค ๋ฌธ์ž๋Š” "0123"์ด ๋œ๋‹ค.
 */
@Override 
public String toString() {
    return String.format("%03d-%03d-%04d",
            areaCode, prefix, lineNum);
}

/**
 * ์ด ์•ฝ๋ฌผ์— ๊ด€ํ•œ ๋Œ€๋žต์ ์ธ ์„ค๋ช…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
 * "[์•ฝ๋ฌผ #9: ์œ ํ˜•=์‚ฌ๋ž‘, ๋ƒ„์ƒˆ=ํ…Œ๋ ˆ๋นˆ์œ , ๊ฒ‰๋ชจ์Šต=๋จน๋ฌผ]"
 */
@Override 
public String toString() { ... }

3. toString์ด ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์— ํฌํ•จ๋œ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” API๋ฅผ ์ œ๊ณตํ•˜์ž - getter

 

๐Ÿ“ํ•ต์‹ฌ ์ •๋ฆฌ

  • ๋ชจ๋“  ๊ตฌ์ฒด ํด๋ž˜์Šค์—์„œ Object์˜ toString์„ ์žฌ์ •์˜ํ•˜์ž
    • ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ด๋ฏธ ์•Œ๋งž๊ฒŒ ์žฌ์ •์˜ํ•œ ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ์ž„
  • toString์„ ์žฌ์ •์˜ํ•œ ํด๋ž˜์Šค๋Š” ์‹œ์Šคํ…œ์„ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์คŒ
  • toString์€ ํ•ด๋‹น ๊ฐ์ฒด์— ๊ด€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ฝ๊ธฐ ์ข‹์€ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ