item 13 leekyunghee - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํํ๋ผ
- ๋ณต์ ํด๋ ๋๋ ํด๋์ค์์ ๋ช ์ํ๋ ์ฉ๋์ ๋ฏน์ค์ธ ์ธํฐํ์ด์ค
- clone ๋ฉ์๋๊ฐ ์ ์ธ๋ ๊ณณ์ด Cloneable์ด ์๋ Object์ด๊ณ ๊ทธ๋ง์ ๋ protected ๋ผ๋ ๋ฐ ์๋ค.
- ๊ทธ๋์ Cloneable์ ๊ตฌํํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ธ๋ถ ๊ฐ์ฒด์์ clone ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.
๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ์ง๋ง 100% ์ฑ๊ณตํ๋ ๊ฒ์ ์๋
Cloneable ์ธํฐํ์ด์ค
- Object์ protected ๋ฉ์๋์ธ clone์ ๋์ ๋ฐฉ์์ ๊ฒฐ์ ํ๋ค
- Cloneable์ ๊ตฌํํ ํด๋์ค์ ์ธ์คํด์ค์์ clone์ ํธ์ถํ๋ฉด ๊ทธ ๊ฐ์ฒด์ ํ๋๋ค์ ํ๋ํ๋ ๋ณต์ฌํ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉฐ ๊ทธ๋ ์ง ์์ ํด๋์ค์ ์ธ์คํด์ค์์ ํธ์ถํ๋ฉด CloneNotSupportedException์ ๋์ง๋ค.
ํต์ฌ ์ ๋ฆฌ
์๋ก์ด ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ๋๋ ์ ๋๋ก cloneable์ ํ์ฅํด์๋ ์๋๋ฉฐ ์๋ก์ด ํด๋์ค๋ ์ด๋ฅผ ๊ตฌํํด์๋ ์๋๋ค. final ํด๋์ค๋ผ๋ฉด Cloneable์ ๊ตฌํํด๋ ์ํ์ด ํฌ์ง ์์ง๋ง ์ฑ๋ฅ ์ต์ ํ ๊ด์ ์์ ๊ฒํ ํ ๋๋ฌผ๊ฒ ํ์ฉ๋์ด์ผ ํจ
๊ธฐ๋ณธ ์์น์ ๋ณต์ ๊ธฐ๋ฅ์ ์์ฑ์์ ํฉํฐ๋ฆฌ๋ฅผ ์ด์ฉํ๋ ๊ฒ ๊ฐ์ฅ ์ต๊ณ
๋ฐฐ์ด๋ง clone ๋ฉ์๋ ๋ฐฉ์์ ์ฌ์ฉ