Serializable์ ์ค๋ฒ๋ผ์ด๋ฉํ ๋ฉ์๋๊ฐ ์์ด ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ ์ธํฐํ์ด์ค์์๋, ์๋์ ์ด์ ๋ค๋ก ์ธํด ๊ตฌํ์ ์ถํ์ ์ด๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ด๋ ค์
- ํด๋์ค๊ฐ ์ง๋ ฌํ ๊ฐ๋ฅํด์ง๋ ์๊ฐ,
private๊ณผ package-private ํ๋๋ค๋ API๋ก ๊ณต๊ฐ๋๋ ๊ฒ๊ณผ ๋์ผ
ํด์ง- ์ญ์ง๋ ฌํ ๊ณผ์ ์์ ์ผ๋ง๋ ์ง ์ด๋ค์ ์ ์ดํ ์ ์์ผ๋ฏ๋ก
- ๋ํ, ๋ด๋ถ ๊ตฌํ์ ์์ ํ๋ ๊ฒ๋ ์ด๋ ค์์ง
- ๋ด๋ถ ๊ตฌํ์ด ์์ ๋๋ฉด ์ง๋ ฌํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ญ์ง๋ ฌํ์ ์คํจํ ์ ์๊ธฐ ๋๋ฌธ
- ์ง๋ ฌํ ๊ฐ๋ฅ ํด๋์ค๋ก ํ์ํ๋ฉด, ๊ฐ ํด๋์ค์ ์คํธ๋ฆผ ๊ณ ์ ์๋ณ์(serial version UID)๊ฐ ๋ถ์ฌ๋จ
- ์ด๋ static final long ํ๋๋ก, ๊ธฐ๋ณธ์ ์ผ๋ก
ํด๋์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ๋ค(ํด๋์ค๋ช , ๊ตฌํํ๋ ์ธํฐํ์ด์ค, ๋ฉค๋ฒ๋ณ์์ ๋ฉ์๋ ๋ฑ)์ ๊ธฐ๋ฐ์ผ๋ก ํด์ ํจ์ SHA-1์ ์ ์ฉํด ์์ฑ
๋จ - ์ฆ, ๋ด๋ถ ๊ตฌํ์ด ์กฐ๊ธ์ด๋ผ๋ ์์ ๋๋ฉด ์ด ๊ฐ์ด ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ํธํ์ฑ์ด ๊นจ์ง
- ์ญ์ง๋ ฌํ๋ฅผ ํตํด ์๋ ค์ง ์์ฑ์๋ฅผ ์ด์ฉํ๋ ๊ฒ ์ด์ธ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ํ๋ํ ์ ์์
- ์ด๋ ๋ถ๋ณ์์ ๊นจํธ๋ฆฌ๊ณ , ๊ณต๊ฒฉ์๋ก ํ์ฌ๊ธ ๊ฐ์ฒด ๋ด๋ถ์ ์ ๊ทผ์ด ํ๊ฐ๋์ง ์์ ๊ฐ๋ ํ๋ํ ์ ์๋๋ก ๋ง๋ฆ
- ์ง๋ ฌํ ๊ฐ๋ฅ ํด๋์ค๋ ๊ตฌ๋ฒ์ -์๋ฒ์ ๊ฐ ํธํ์ฑ์ ์ ๋ณด์ฅํด์ผ ํจ
- ๋ฐ๋ผ์, ์ ๋ฒ์ ์ง๋ ฌํ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ๋ฒ์ ์ผ๋ก ์ญ์ง๋ ฌํํ๋ ๊ฒฝ์ฐ์ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ์ ๋ํ์ฌ ๋ฌธ์ ๊ฐ ์๋์ง ํ ์คํธํด์ผ ํจ
- ์ญ์ฌ์ ์ผ๋ก
๊ฐ ํด๋์ค
์์๋ Serializable์ ๊ตฌํํ๊ณ , ํ๋์ ๋ํ๋ด๋๋์ ํด๋์ค
์์๋ ๊ตฌํํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์- ์ง๋ ฌํ๋ฅผ ์ํํ๋ ๋ชฉ์ ์์ฒด๊ฐ ๋ค๋ฅธ ์ ์ฅ์์ ์ ์ก ๋ฐ ์ ์ฅํ๊ธฐ ์ํจ์ผ ๋๊ฐ ๋ง๊ธฐ ๋๋ฌธ
- Serializable์ ๊ตฌํํ๋ ํด๋์ค์ ํ์ ํด๋์ค, ์์ํ๋ ํ์ ์ธํฐํ์ด์ค ๋ชจ๋ ์ง๋ ฌํ ๊ฐ๋ฅํ ์ฑ์ง์ ๊ฐ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์์์ฉ์ผ๋ก ์ค๊ณ๋ ํด๋์ค/์ธํฐํ์ด์ค๋ Serializable์ ๊ตฌํํ์ง ์๋ ๊ฒ์ด ์ข์
-
Serializable์ ๊ตฌํํด ์ง๋ ฌํ ๊ฐ๋ฅ ํด๋์ค๋ก ๋ง๋ค๋ ค๋ฉด
์ฅ๊ธฐ ์ง์์ด ๊ฐ๋ฅํ๋๋ก ๊ณ ํ์ง์ ์ง๋ ฌํ ํํ๋ ํจ๊ป ์ค๊ณ
ํด์ผ ํจ- ์ปค์คํ ์ง๋ ฌํ/์ญ์ง๋ ฌํ๋ฅผ ์ ์ค๊ณํ๋ฉด ์์ ์ํ์ฑ์ ์ํ ๋ถ๋ด์ ์ค์ผ ์ ์์ (Item 87 ์ด์ด์)
-
ํ๋ ์ค
๋ถ๋ณ์์ ๋ณด์ฅํด์ผ ํ๋ ๊ฒ
์ด ์๋ค๋ฉด ๋ฐ๋์ ํ์ ํด๋์ค์์finalize ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ์ง ๋ชปํ๋๋ก
ํด์ผ ํจ- finalizer ๊ณต๊ฒฉ์ ์ํ์ฌ ๋ถ๋ณ์ฑ์ ์นจํด๋นํ ์ ์๊ธฐ ๋๋ฌธ (Item 8)
-
ํ๋ ์ค ๊ธฐ๋ณธ๊ฐ(0, false, null)์ผ๋ก ์ด๊ธฐํ๋์ง ๋ง์์ผ ํ๋ ๋ถ๋ณ์์ด ์๋ค๋ฉด
readObjectNoData
๋ฉ์๋๋ฅผ ์ถ๊ฐํด์ผ ํจprivate void readObjectNoData() throws InvalidObjectException { throw new InvalidObjectException("์คํธ๋ฆผ ๋ฐ์ดํฐ๊ฐ ํ์"); }
-
์์ ํด๋์ค๋ ์ง๋ ฌํํ์ง ์์ ๊ฑฐ์ง๋ง ํ์ ํด๋์ค๋ ์ง๋ ฌํํ๋ ค๋ ๊ฒฝ์ฐ, ํ์ ํด๋์ค์ ์ง๋ ฌํ ๋ถ๋ด์ ๋๊ธฐ ์ํด ์์ ํด๋์ค์์ no args constructor๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ข์
- ์ ๊ทธ๋ฌ๋ฉด ์ง๋ ฌํ๋ฅผ ์ํด
์ง๋ ฌํ ํ๋ก์ ํจํด (Item 90)
์ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ
- ์ ๊ทธ๋ฌ๋ฉด ์ง๋ ฌํ๋ฅผ ์ํด
-
๋ด๋ถ ํด๋์ค๋ ์ง๋ ฌํ๋ฅผ ๊ตฌํํ๋ฉด ์ ๋จ
- ๋ด๋ถ ํด๋์ค์ ๋ํ ๊ธฐ๋ณธ ์ง๋ ฌํ ํํ๋ ํ์คํ ์ ํด์ง์ง ์์๊ธฐ ๋๋ฌธ