item 86 Seungmin - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

Effective Java 3e ์•„์ดํ…œ 86์„ ์š”์•ฝํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค ์„ ์–ธ์— implements Serializable๋งŒ ๋ง๋ถ™์ด๋ฉด ๋œ๋‹ค. ์ง๋ ฌํ™”๋ฅผ ์ง€์›ํ•˜๊ธฐ๋ž€ ์งง๊ฒŒ ๋ณด๋ฉด ์†์‰ฌ์›Œ ๋ณด์ด์ง€๋งŒ, ๊ธธ๊ฒŒ ๋ณด๋ฉด ์•„์ฃผ ๊ฐ’๋น„์‹ผ ์ผ์ด๋‹ค.

Serializable์„ ๊ตฌํ˜„ํ•˜๋ฉด ๋ฆด๋ฆฌ์Šคํ•œ ๋’ค์—๋Š” ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ต๋‹ค

  • ํด๋ž˜์Šค๊ฐ€ Serializable์„ ๊ตฌํ˜„ํ•˜๋ฉด ์ง๋ ฌํ™”๋œ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ์ธ์ฝ”๋”ฉ(์ง๋ ฌํ™” ํ˜•ํƒœ)๋„ ํ•˜๋‚˜์˜ ๊ณต๊ฐœ API๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ํด๋ž˜์Šค๊ฐ€ ๋„๋ฆฌ ํผ์ง„๋‹ค๋ฉด ๊ทธ ์ง๋ ฌํ™” ํ˜™ํƒœ๋„ ์˜์›ํžˆ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ปค์Šคํ…€ ์ง๋ ฌํ™” ํ˜•ํƒœ๋ฅผ ์„ค๊ณ„ํ•˜์ง€ ์•Š๊ณ  ์ž๋ฐ”์˜ ๊ธฐ๋ณธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง๋ ฌํ™” ํ˜•ํƒœ๋Š” ์ตœ์†Œ ์ ์šฉ ๋‹น์‹œ ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„ ๋ฐฉ์‹์— ์˜์›ํžˆ ๋ฌถ์—ฌ๋ฒ„๋ฆฐ๋‹ค.

๊ธฐ๋ณธ ์ง๋ ฌํ™” ํ˜•ํƒœ์—์„œ๋Š” ํด๋ž˜์Šค์˜ private๊ณผ package-private ์ธํŠธํ„ด์Šค ํ•„๋“œ๋“ค ๋งˆ์ € API๋กœ ๊ณต๊ฐœํ•˜๋Š” ๊ผด์ด ๋œ๋‹ค. ์บก์Šํ™”๊ฐ€ ๊นจ์ง„๋‹ค. ํ•„๋“œ๋กœ์˜ ์ ‘๊ทผ์„ ์ตœ๋Œ€ํ•œ ๋ง‰์•„ ์ •๋ณด๋ฅผ ์€๋‹‰ํ•˜๋ผ๋Š” ์กฐ์–ธ๋„ ๋ฌด๋ ฅํ™”๋œ๋‹ค.

  • ๋’ค๋Šฆ๊ฒŒ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์†๋ณด๋ฉด ์›๋ž˜์˜ ์ง๋ ฌํ™” ํ˜•ํƒœ์™€ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

์›๋ž˜์˜ ์ง๋ ฌํ™” ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚ด๋ถ€ ํ‘œํ˜„์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์–ด๋ ต๊ธฐ๋„ ํ•˜๊ฑฐ๋‹ˆ์™€ ์†Œ์Šค์ฝ”๋“œ์— ์ง€์ €๋ถ„ํ•œ ํ˜น์„ ๋‚จ๊ฒจ๋†“๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ์ง๋ ฌํ™” ๊ฐ€๋Šฅ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๊ธธ๊ฒŒ ๋ณด๊ณ  ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ณ ํ’ˆ์งˆ์˜ ์ง๋ ฌํ™” ํ˜•ํƒœ๋„ ์ฃผ์˜ํ•ด์„œ ํ•จ๊ป˜ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

์ง๋ ฌํ™”๊ฐ€ ํด๋ž˜์Šค ๊ฐœ์„ ์„ ๋ฐฉํ•ดํ•˜๋Š” ์˜ˆ  
๋ชจ๋“  ์ง๋ ฌํ™”๋œ ํด๋ž˜์Šค๋Š” ๊ณ ์œ  ์‹๋ณ„ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌ๋ฐ›๋Š”๋‹ค. serialVersionUID ๋ผ๋Š” ์ด๋ฆ„์˜ static final long ํ•„๋“œ๋กœ. 
์ด ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ๋Š” ํด๋ž˜์Šค ์ด๋ฆ„, ๊ตฌํ˜„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋“ค, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ๋„ฃ์€ ๊ฒƒ์„ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ ํด๋ž˜์Šค ๋งด๋ฒ„๋“ค์ด ๊ณ ๋ ค๋œ๋‹ค.  
๊ทธ๋ž˜์„œ ๋‚˜์ค‘์— ์ด๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด ์ง๋ ฌ ๋ฒ„์ „ UID ๊ฐ’๋„ ๋ณ€ํ•œ๋‹ค. 
๋‹ค์‹œ ๋งํ•ด, ์ž๋™ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์— ์˜์กดํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ˜ธํ™˜์„ฑ์ด ๊นจ์ ธ๋ฒ„๋ ค ๋Ÿฐํƒ€์ž„์— InvalidClassException์ด ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

Serializable ๊ตฌํ˜„์˜ ๊ตฌ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ๋ฒ„๊ทธ์™€ ๋ณด์•ˆ ๊ตฌ๋ฉ์ด ์ƒ๊ธธ ์œ„ํ—˜์ด ๋†’์•„์ง„๋‹ค๋Š” ์ ์ด๋‹ค

๊ฐ์ฒด๋Š” ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“œ๋Š” ๊ฒŒ ๊ธฐ๋ณธ์ด๋‹ค. ์ฆ‰, ์ง๋ ฌํ™”๋Š” ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์šฐํšŒํ•˜๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ๊ธฐ๋ฒ•์ธ ๊ฒƒ์ด๋‹ค. ์—ญ์ง๋ ฌํ™”๋Š” ์ผ๋ฐ˜ ์ƒ์„ฑ์ž์˜ ๋ฌธ์ œ๊ฐ€ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋˜๋Š” ์ˆจ์€ ์ƒ์„ฑ์ž๋‹ค. ์ด ์ƒ์„ฑ์ž๋Š” ์ „๋ฉด์— ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์œผ๋ฏ€๋กœ "์ƒ์„ฑ์ž์—์„œ ๊ตฌ์ถ•ํ•œ ๋ถˆ๋ณ€์‹์„ ๋ชจ๋‘ ๋ณด์žฅํ•ด์•ผ ํ•˜๊ณ  ์ƒ์„ฑ ๋„์ค‘ ๊ณต๊ฒฉ์ž๊ฐ€ ๊ฐ์ฒด ๋‚ด๋ถ€๋ฅผ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์—†๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค" ๋Š” ์‚ฌ์‹ค์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์–ด๋ ต๋‹ค. ๊ธฐ๋ณธ ์—ญ์ง๋ ฌํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆ๋ณ€์‹ ๊นจ์ง๊ณผ ํ—ˆ๊ฐ€๋˜์ง€ ์•Š์€ ์ ‘๊ทผ์— ์‰ฝ๊ฒŒ ๋…ธ์ถœ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.

Serializable ๊ตฌํ˜„์˜ ์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์‹ ๋ฒ„์ „์„ ๋ฆด๋ฆฌ์Šคํ•  ๋•Œ ํ…Œ์ŠคํŠธ ํ•  ๊ฒƒ์ด ๋Š˜์–ด๋‚œ๋‹ค๋Š” ์ ์ด๋‹ค.

์ง๋ ฌ์™€ ๊ฐ€๋Šฅ ํด๋ž˜์Šค๊ฐ€ ์ˆ˜์ •๋˜๋ฉด ์‹ ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง๋ ฌํ™”ํ•œ ํ›„ ๊ตฌ๋ฒ„์ „์œผ๋กœ ์—ญ์ง๋ ฌํ™” ํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐ˜๋Œ€๋„ ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€์‚ฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ ํ•  ์–‘์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ํด๋ž˜์Šค ์ฒ˜์Œ ์ œ์ž‘ํ•  ๋•Œ ์ปค์Šค์ฒจ ์ง๋ ฌํ™”๋ฅผ ์ž˜ ์„ค๊ณ„ํ•ด๋†จ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ ๋ถ€๋‹ด์„ ์ค„์ผ์ˆ˜ ์žˆ๋‹ค.

Serializable ๊ตฌํ˜„ ์—ฌ๋ถ€๋Š” ๊ฐ€๋ณ๊ฒŒ ๊ฒฐ์ •ํ•  ์‚ฌ์•ˆ์ด ์•„๋‹ˆ๋‹ค

๋‹จ, ๊ฐ์ฒด๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ ์ž๋ฐ” ์ง๋ ฌํ™”๋ฅผ ์ด์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์šฉ์œผ๋กœ ๋งŒ๋“  ํด๋ž˜์Šค๋ผ๋ฉด ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†๋‹ค. Serializable ์„ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์“ฐ์ผ ํด๋ž˜์Šค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์ด๋“๊ณผ ๋น„์šฉ์„ ์ž˜ ์ €์šธ์งˆํ•ด์•ผ ํ•œ๋‹ค.

์—ญ์‚ฌ์ ์œผ๋กœ DigInteger์™€ Instant ๊ฐ™์€ ๊ฐ’ํด๋ž˜์Šค์™€ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋“ค์€ Serializable์„ ๊ตฌํ˜„ํ•˜๊ณ  ์Šค๋ ˆ๋“œ ํ’€์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์€ ๋Œ€๋ถ€๋ถ„ Serializable ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๋‹ค.

์ƒ์†์šฉ์œผ๋กœ ์„ค๊ณ„๋œ ํด๋ž˜์Šค๋Š” ๋Œ€๋ถ€๋ถ„ Serializable์„ ๊ตฌํ˜„ํ•˜๋ฉด ์•ˆ ๋˜๋ฉฐ, ์ธํ„ฐํŽ˜์ด์Šค๋„ ๋Œ€๋ถ€๋ถ„ Serializable์„ ํ™•์žฅํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

์ด ๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉด, ๊ทธ๋Ÿฐ ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ๊ทธ๋Ÿฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ด์—๊ฒŒ ์ปค๋‹ค๋ž€ ๋ถ€๋‹ด์„ ์ง€์šฐ๊ฒŒ ๋œ๋‹ค.

Serializable์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋งŒ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ด ๊ทœ์น™์„ ์–ด๊ธธ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์ƒ์†์šฉ์œผ๋กœ ์„ค๊ณ„๋œ ํด๋ž˜์Šค ์ค‘ Serializable์„ ๊ตฌํ˜„ํ•œ ์˜ˆ๋กœ๋Š” Throwable๊ณผ Component๊ฐ€ ์žˆ๋‹ค. Throwable์€ ์„œ๋ฒ„๊ฐ€ RMI๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ ์˜ˆ์™ธ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด Serializable์„ ๊ตฌํ˜„ํ–ˆ๊ณ , Component๋Š” GUI๋ฅผ ์ „์†กํ•˜๊ณ  ์ €์žฅํ•˜๊ณ  ๋ณต์›ํ•˜๊ธฐ ์œ„ํ•ด Serializable์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.

ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๊ฐ€ ์ง๋ ฌํ™”์™€ ํ™•์žฅ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ฃผ์˜ํ•  ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ๋‹ค.

  1. ์ธ์Šคํ„ด์Šค ํ•„๋“œ ๊ฐ’ ์ค‘ ๋ถˆ๋ณ€์‹์„ ๋ณด์žฅใ…Žํ•ด์•ผ ํ•  ๊ฒŒ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ finalize ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, finalize ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ์ด ์žฌ์ •์˜ํ•˜๋ฉด์„œ final๋กœ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด finalizer ๊ณต๊ฒฉ์„ ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์ธ์Šคํ„ด์Šค ํ•„๋“œ ์ค‘ ๊ธฐ๋ณธ๊ฐ’(0, boolean, null)์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜๋ฉด ์œ„๋ฐฐ๋˜๋Š” ๋ถˆ๋ณ€์‹์ด ์žˆ๋‹ค๋ฉด ํด๋ž˜์Šค์— ๋‹ค์Œ์˜ readObjectNoDate ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ถ”๊ฐ€ํ•ด์•ผ ๋œ๋‹ค. ๋ฐ‘์˜ ๋ฉ”์„œ๋“œ๋Š” ์ž๋ฐ”4 ์— ์ถ”๊ฐ€๋œ ๊ฒƒ์œผ๋กœ, ๊ธฐ์กด์˜์ง๋ ฌํ™” ๊ธฐ๋Šฅ ํด๋ ˆ์Šค์— ์ง๋ ฌํ™” ๊ฐ€๋Šฅ ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋“œ๋ฌธ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋‹ค.
// ์ƒํƒœ๊ฐ€ ์žˆ๊ณ , ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ , ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค์šฉ readObjectNoData 
private void readObjectNoData() throws InvalidObjectException{
    throw new InvalidObjectException("์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค");
}

Serializable์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ธฐ๋กœ ํ•  ๋•Œ๋Š” ํ•œ ๊ฐ€์ง€๋งŒ ์ฃผ์˜ํ•˜๋ฉด ๋œ๋‹ค.

์ƒ์†์šฉ ํด๋ž˜์Šค์ธ๋ฐ ์ง๋ ฌํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ทธ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ง๋ ฌํ™”๋ฅผ ์ง€์›ํ•˜๋ ค ํ•  ๋•Œ ๋ถ€๋‹ด์ด ๋Š˜์–ด๋‚œ๋‹ค. ์ด๋Ÿฐ ํด๋ž˜์Šค๋ฅผ ์—ญ์ง๋ ฌํ™” ํ•˜๋ ค๋ฉด ๊ทธ ์ƒ์œ„ ํด๋ž˜์Šค๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด์™€ ๊ฐ™์€ ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋Š” ์–ด์ฉ” ์ˆ˜ ์—†์ด ์ง๋ ฌ์™€ ํ”„๋ก์‹œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋‚ด๋ถ€ ํด๋ž˜์Šค๋Š” ์ง๋ ฌํ™”๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ๋ง์•„ํ– ํ•œ๋‹ค.

๋‚ด๋ถ€ ํด๋ž˜์Šค์—๋Š” ๋ฐ”๊นฅ ์ธ์Šคํ„ด์Šค์˜ ์ฐธ์กฐ์™€ ์œ ํšจ ๋ฒ”์œ„ ์•ˆ์˜ ์ง€์—ญ๋ณ€์ˆ˜ ๊ฐ’๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•œ ํ•„๋“œ๋“ค์ด ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค. ์ด ํ•„๋“œ๋“ค์ด ํด๋ž˜์Šค ์ •์˜์— ์–ด๋–ป๊ฒŒ ์ถ”๊ฐ€๋˜๋Š”์ง€๋„ ์ •์˜๋„์ง€ ์•Š์•˜๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๋‚ด๋ถ€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง๋ ฌํ™” ํ˜•ํƒœ๋Š” ๋ถ„๋ช…ํ•˜์ง€๊ฐ€ ์•Š๋‹ค. ๋‹จ, ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” Serializable์„ ๊ตฌํ˜„ํ•ด๋„ ๋œ๋‹ค.

ํ•ต์‹ฌ์ •๋ฆฌ

Serializable์€ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ์„ ์–ธํ•˜๊ธฐ๋Š” ์•„์ฃผ ์‰ฝ์ง€๋งŒ, ๊ทธ๊ฒƒ์€ ๋ˆˆ์†์ž„์„ ๋ฟ์ด๋‹ค. ํ•œ ํด๋ž˜์Šค์˜ ์—ฌ๋Ÿฌ ๋ฒ„์ „์ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ผ์ด ์—†๊ณ  ์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ์— ๋…ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ๋“ฑ, ๋ณดํ˜ธ๋œ ํ™˜๊ฒฝ์—์„œ๋งŒ ์“ฐ์ผ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด Serializable ๊ตฌํ˜„์€ ์•„์ฃผ ์‹ ์ค‘ํ•˜๊ฒŒ ์ด๋ค„์ ธ์•ผ ํ•œ๋‹ค. ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋ผ๋ฉด ์ฃผ์˜ ์‚ฌํ•ญ์ด ๋”์šฑ ๋งŽ์•„์ง„๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ