item 14 leekyunghee - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

Comparable์„ ๊ตฌํ˜„ํ•  ์ง€ ๊ณ ๋ คํ•˜๋ผ

  • ๋ณต์ œํ•ด๋„ ๋˜๋Š” ํด๋ž˜์Šค์ž„์„ ๋ช…์‹œํ•˜๋Š” ์šฉ๋„์˜ ๋ฏน์Šค์ธ ์ธํ„ฐํŽ˜์ด์Šค
  • clone ๋ฉ”์„œ๋“œ๊ฐ€ ์„ ์–ธ๋œ ๊ณณ์ด Cloneable์ด ์•„๋‹Œ Object์ด๊ณ  ๊ทธ๋งˆ์ €๋„ protected ๋ผ๋Š” ๋ฐ ์žˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ Cloneable์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์™ธ๋ถ€ ๊ฐ์ฒด์—์„œ clone ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ 100% ์„ฑ๊ณตํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

  • Object์˜ protected ๋ฉ”์„œ๋“œ์ธ clone์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•œ๋‹ค
  • Cloneable์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์—์„œ clone์„ ํ˜ธ์ถœํ•˜๋ฉด ๊ทธ ๊ฐ์ฒด์˜ ํ•„๋“œ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ณต์‚ฌํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์—์„œ ํ˜ธ์ถœํ•˜๋ฉด CloneNotSupportedException์„ ๋˜์ง„๋‹ค.

ํ•ต์‹ฌ ์ •๋ฆฌ

์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ์ ˆ๋Œ€๋กœ cloneable์„ ํ™•์žฅํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋„ ์ด๋ฅผ ๊ตฌํ˜„ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. final ํด๋ž˜์Šค๋ผ๋ฉด Cloneable์„ ๊ตฌํ˜„ํ•ด๋„ ์œ„ํ—˜์ด ํฌ์ง€ ์•Š์ง€๋งŒ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ด€์ ์—์„œ ๊ฒ€ํ†  ํ›„ ๋“œ๋ฌผ๊ฒŒ ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•จ

๊ธฐ๋ณธ ์›์น™์€ ๋ณต์ œ ๊ธฐ๋Šฅ์€ ์ƒ์„ฑ์ž์™€ ํŒฉํ„ฐ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒŒ ๊ฐ€์žฅ ์ตœ๊ณ 

๋ฐฐ์—ด๋งŒ clone ๋ฉ”์„œ๋“œ ๋ฐฉ์‹์„ ์‚ฌ์šฉ