CodeGym
ํ•™์Šต
๊ฐ•์ขŒ
๊ณผ์ œ
์„ค๋ฌธ & ํ€ด์ฆˆ
๊ฒŒ์ž„
๋„์›€๋ง
์ผ์ •
์ปค๋ฎค๋‹ˆํ‹ฐ
์‚ฌ์šฉ์ž
ํฌ๋Ÿผ
์ฑ„ํŒ…
์•„ํ‹ฐํด
์„ฑ๊ณต ์‚ฌ๋ก€
ํ™œ๋™
ํ›„๊ธฐ
๊ตฌ๋…
๋ผ์ดํŠธ ํ…Œ๋งˆ

๊ฐ•์˜

  • ๋ฆฌ๋ทฐ
  • ํšŒ์‚ฌ ์†Œ๊ฐœ
์‹œ์ž‘
ํ•™์Šต ์‹œ์ž‘
Start learning now
  • ์ง„ํ–‰ ์ƒํ™ฉ
  • ์ฝ”์Šค
  • ํ€˜์ŠคํŠธ ๋งต
  • ๋ ˆ์Šจ
  • Externalizable: ์ง๋ ฌํ™”๋ฅผ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•˜๊ธฐ

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 43,๋ ˆ์Šจ 2
    Java์˜ ๊ธฐ๋ณธ ์ง๋ ฌํ™”๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค: ์ž๋™ ์ง๋ ฌํ™”์ธ Serializable๋งŒ์œผ๋กœ ๋ถ€์กฑํ•  ๋•Œ๋Š” Externalizable ๊ณ„์•ฝ๊ณผ writeExternal/ readExternal ๋ฉ”์„œ๋“œ๊ฐ€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ์™„์ „ํžˆ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•, ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃจ๋ฉฐ, ObjectOutputStream/ ObjectInputStream ์ŠคํŠธ๋ฆผ๊ณผ ๋น„๊ตํ•˜๊ณ , ์˜ˆ์‹œ, ์žฅ๋‹จ์ , ๊ทธ๋ฆฌ๊ณ  ํ”ํ•œ ์‹ค์ˆ˜๋“ค(ํ•„์ˆ˜์ธ public ๋ฌด์ธ์ž ์ƒ์„ฑ์ž, ๊ธฐ๋ก/์ฝ๊ธฐ ์ˆœ์„œ ๋“ฑ)์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ง๋ ฌํ™” ๋™์ž‘ ์กฐ์ •: ์ปค์Šคํ…€ ๋ฉ”์„œ๋“œ

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 43,๋ ˆ์Šจ 3
    ์ด ๊ฐ•์˜์—์„œ๋Š” Java์—์„œ writeReplace์™€ readResolve ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™” ๊ณผ์ •์„ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค: ์™œ ๊ฐ์ฒด๋ฅผ ํ”„๋ก์‹œ๋กœ ๋Œ€์ฒดํ•˜๋Š”์ง€, ์‹ฑ๊ธ€ํ„ด์„ ์–ด๋–ป๊ฒŒ ๋ณด์กดํ•˜๋Š”์ง€, ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด writeObject/ readObject์™€ ์–ด๋–ป๊ฒŒ ๋งž๋ฌผ๋ฆฌ๋Š”์ง€. ๋‹จ๊ณ„๋ณ„ ์‹ค์Šต, ํ๋ฆ„๋„์™€ ํ•จ๊ป˜ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ง๋ ฌํ™” ๋ณด์•ˆ: ๋ชจ๋ฒ” ์‚ฌ๋ก€

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 43,๋ ˆ์Šจ 4
    Java์—์„œ ์•ˆ์ „ํ•œ ์ง๋ ฌํ™”๋ฅผ ์œ„ํ•œ ์‹ค์ „ ๊ฐ€์ด๋“œ: ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค์˜ ์—ญ์ง๋ ฌํ™”๊ฐ€ ์™œ ์œ„ํ—˜ํ•œ์ง€, ObjectInputFilter, transient ํ‚ค์›Œ๋“œ, ๋ช…์‹œ์ ์ธ serialVersionUID, instanceof๋ฅผ ํ†ตํ•œ ํƒ€์ž… ๊ฒ€์ฆ, ๊ทธ๋ฆฌ๊ณ  ๋Œ€์ฒด ๊ตํ™˜ ํฌ๋งท(JSON/Proto)์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ๋ฐฉ์–ดํ•˜๋Š”์ง€๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋‚ด๋ถ€์—๋Š” โ€” ์ง๊ด€์ ์ธ ์ฝ”๋“œ ์˜ˆ์ œ, ํ—ˆ์šฉ๋œ ํด๋ž˜์Šค ํ•„ํ„ฐ๋ง, ๊ทธ๋ฆฌ๊ณ  ์ „ํ˜•์ ์ธ ์‹ค์ˆ˜์— ๋Œ€ํ•œ ํ•ด์„ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ค‘์ฒฉ ๊ฐ์ฒด ์ง๋ ฌํ™”: ํŠน์ง•

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 44,๋ ˆ์Šจ 0
    ์ด ๊ฐ•์˜์—์„œ๋Š” Java๊ฐ€ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ๊นŠ๊ฒŒ ์ง๋ ฌํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์ฐธ์กฐ ํ•„๋“œ์— ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€, ์™œ ๋ชจ๋“  ์ค‘์ฒฉ ๊ฐ์ฒด๊ฐ€ Serializable์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€, NotSerializableException์„ ์–ด๋–ป๊ฒŒ ํ”ผํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์— transient ํ‚ค์›Œ๋“œ๊ฐ€ ๋„์›€์ด ๋˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ค‘์ฒฉ, ์ปฌ๋ ‰์…˜, ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด์˜ ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™”๋ฅผ ๋ณด์—ฌ ์ฃผ๊ณ , serialVersionUID ๋ฐ ํฐ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„์™€ ๊ด€๋ จ๋œ ํ”ํ•œ ์˜ค๋ฅ˜๋„ ํ•จ๊ป˜ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ค‘์ฒฉ ๋ฐ ๊ณ„์ธต ๊ฐ์ฒด: ๊ทธ๋ž˜ํ”„ ์ง๋ ฌํ™”

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 44,๋ ˆ์Šจ 1
    Java๊ฐ€ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ง๋ ฌํ™”ํ•˜๋Š”์ง€: ์ค‘์ฒฉ ์ปฌ๋ ‰์…˜๊ณผ ์ƒ์† ๊ณ„์ธต๋ถ€ํ„ฐ ๊ฐ์ฒด์˜ ์ˆœํ™˜ ๊ทธ๋ž˜ํ”„๊นŒ์ง€. ์™œ ์ง๋ ฌํ™”๊ฐ€ Map<String, List<Book>>์—์„œ ๋™์ž‘ํ•˜๋Š”์ง€, List<Animal>์— ๋‹ด๊ธด ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์‹ค์ œ ํƒ€์ž…์ด ์–ด๋–ป๊ฒŒ ๋ณด์กด๋˜๋Š”์ง€, ์ˆœํ™˜์ด ์žˆ์„ ๋•Œ ์ฐธ์กฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ํ•จ์ •์ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๋˜ํ•œ ObjectOutputStream/ ObjectInputStream์˜ ์—ญํ• , writeObject/ readObject ๋ฉ”์„œ๋“œ, serialVersionUID ํ•„๋“œ์™€ transient ํ•œ์ •์ž์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ˆœํ™˜ ์ฐธ์กฐ ๋ฌธ์ œ: ๊ฐ์ง€์™€ ์šฐํšŒ

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 44,๋ ˆ์Šจ 2
    ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„์—์„œ ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์ง๋ ฌํ™”์— ์™œ ์œ„ํ—˜ํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. Java ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ โ€” ObjectOutputStream/ ObjectInputStream โ€” ์ด ์ด๋ฏธ ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ถ”์ ํ•˜๊ณ  ์ฐธ์กฐ(ํ•ธ๋“ค)๋ฅผ ๊ธฐ๋กํ•˜์—ฌ StackOverflowError๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค. ๋˜ํ•œ ์ปค์Šคํ…€ ์ง๋ ฌํ™”( writeObject/ readObject, defaultWriteObject/ defaultReadObject)์˜ ํ•จ์ •๊ณผ, JSON์—์„œ์˜ ์ˆœํ™˜ ์ฒ˜๋ฆฌ ์ „๋žต๋„ ๋‹ค๋ฃน๋‹ˆ๋‹ค: @JsonIdentityInfo ์• ๋„ˆํ…Œ์ด์…˜, @JsonBackReference/ @JsonManagedReference ์กฐํ•ฉ, transient๋กœ ํ•„๋“œ ์ œ์™ธ, ์‹๋ณ„์ž ์‚ฌ์šฉ ๋“ฑ.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ด์ง„ ์ง๋ ฌํ™”์—์„œ ๊ฐ์ฒด ๋™์ผ์„ฑ

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 44,๋ ˆ์Šจ 3
    Java์—์„œ ์ด์ง„ ์ง๋ ฌํ™” ์‹œ ๊ฐ์ฒด์˜ ๋™์ผ์„ฑ์„ ์–ด๋–ป๊ฒŒ ๋ณด์กดํ•˜๊ณ  ๋ณต์›ํ•˜๋Š”๊ฐ€: ์™œ a. equals( b)๋กœ ํŒ๋‹จํ•˜๋Š” ๋™๋“ฑ์„ฑ์€ ๋™์ผ์„ฑ( a == b)๊ณผ ๊ฐ™์ง€ ์•Š์€์ง€, ObjectOutputStream/ ObjectInputStream์ด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ค‘๋ณต์„ ์“ฐ๋Š” ๋Œ€์‹  โ€œ์žฌ์ฐธ์กฐโ€(reference handle)๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹, ์ด๊ฒƒ์ด ์ˆœํ™˜ ๊ตฌ์กฐ์—์„œ๋„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ด์œ , ๊ทธ๋ฆฌ๊ณ  writeReplace()์™€ readResolve() ๋ฉ”์„œ๋“œ๊ฐ€ ์ตœ์ข… ๋™์ผ์„ฑ์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š”์ง€. ์˜ˆ์ œ๋กœ ์‚ดํŽด๋ณด๋Š” ์‚ฌ์ดํด, ๊ณต์œ  ์ฐธ์กฐ, ์‹ค์Šต ๋ฐ ํ”ํ•œ ์‹ค์ˆ˜.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ปฌ๋ ‰์…˜ ์ง๋ ฌํ™”์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜ ๋ถ„์„

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 44,๋ ˆ์Šจ 4
    ์ด ๊ฐ•์˜์—์„œ๋Š” ์ปฌ๋ ‰์…˜ ์ง๋ ฌํ™”์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋งŒ๋‚˜๋Š” ๋ฌธ์ œ๋“ค์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค: ์š”์†Œ๊ฐ€ Serializable์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” java.io.NotSerializableException, ์ œ๋„ค๋ฆญ์˜ ํ•จ์ •์œผ๋กœ ์ธํ•œ ClassCastException, ๊ทธ๋ฆฌ๊ณ  serialVersionUID๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ํด๋ž˜์Šค ๋ฒ„์ „ ๋น„ํ˜ธํ™˜๊นŒ์ง€. ๋ถˆ๋ณ€ ์ปฌ๋ ‰์…˜( List.of(), Set.of(), Map.of())์˜ ํŠน์ด์ , transient/ static ํ•„๋“œ์˜ ๋™์ž‘, ์„ฑ๋Šฅ๊ณผ ํŒŒ์ผ ํฌ๊ธฐ ์ด์Šˆ ๋“ฑ๋„ ๋‹ค๋ฃจ๋ฉฐ, ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹๊ณผ ์••์ถ•( GZIPOutputStream)์ด ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‹ค์ „ ์กฐ์–ธ, ์ฝ”๋“œ ์˜ˆ์‹œ, ๊ทธ๋ฆฌ๊ณ  ์•ˆ์ „ํ•œ ์—ญ์ง๋ ฌํ™”( readObject/ writeObject)๋ฅผ ์œ„ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ด์ง„ ์ง๋ ฌํ™”์˜ ๋ฌธ์ œ: ๋ณด์•ˆ๊ณผ ํ˜ธํ™˜์„ฑ

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 45,๋ ˆ์Šจ 0
    ์ด ๊ฐ•์˜์—์„œ๋Š” Java์˜ ์ด์ง„ ์ง๋ ฌํ™”๊ฐ€ ๊ฐ€์ง€๋Š” ์œ„ํ—˜์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค์—์„œ์˜ ์—ญ์ง๋ ฌํ™”๊ฐ€ ์™œ ์œ„ํ—˜ํ•œ์ง€(โ€œ๊ฐ€์ ฏ ์ฒด์ธโ€, RCE), readObject ๋ฐ readResolve ๊ฐ™์€ ํŠน์ˆ˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋ฐฉ์–ดํ• ์ง€(ํ—ˆ์šฉ ๋ชฉ๋ก(whitelisting), JSON/ XML๋กœ์˜ ์ „ํ™˜, Jackson ๊ฐ™์€ ์•ˆ์ „ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ๋“ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ž˜์Šค ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ๊ณผ serialVersionUID์˜ ์—ญํ• , InvalidClassException ๋ฐœ์ƒ ์‹œ ๋™์ž‘, transient/ static์˜ ์ œ์•ฝ, ์„ฑ๋Šฅ, ๋ชจ๋ฒ” ์‚ฌ๋ก€์™€ ํ”ํ•œ ์‹ค์ˆ˜๊นŒ์ง€ ์ž์„ธํžˆ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ œ๋„ค๋ฆญ ์ปฌ๋ ‰์…˜ ์ง๋ ฌํ™”: ํŠน์ง•

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 45,๋ ˆ์Šจ 1
    ํƒ€์ž… ์†Œ๊ฑฐ( type erasure)๊ฐ€ ์ œ๋„ค๋ฆญ ์ปฌ๋ ‰์…˜์˜ ์ง๋ ฌํ™”์— ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค: ์™œ ๋Ÿฐํƒ€์ž„์— List<String>๊ณผ List<Integer>๊ฐ€ ๋™์ผํ•œ ArrayList์ธ์ง€, ObjectOutputStream/ ObjectInputStream์œผ๋กœ ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ๊ธฐ๋ก๋˜๊ณ  ์ฝํžˆ๋Š”์ง€, ClassCastException๊ณผ unchecked ์บ์ŠคํŠธ ๊ฒฝ๊ณ ๊ฐ€ ์–ด๋””์„œ ๋น„๋กฏ๋˜๋Š”์ง€. ์ค‘์ฒฉ ์ปฌ๋ ‰์…˜, Map/ Set ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ ์ฃผ๊ณ , Gson/ Jackson์„ ์–ธ๊ธ‰ํ•˜๋ฉฐ, ์•ˆ์ „ํ•œ ์—ญ์ง๋ ฌํ™” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ง๋ ฌํ™” ์‹œ ํ˜ธํ™˜์„ฑ๊ณผ ์—ญํ˜ธํ™˜์„ฑ(backward compatibility)

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 45,๋ ˆ์Šจ 2
    ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐœ์ „์‹œํ‚ค๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ง๊ฐ€๋œจ๋ฆฌ์ง€ ์•Š๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค: ์™œ serialVersionUID๋ฅผ ๊ณ ์ •ํ•ด์•ผ ํ•˜๋Š”์ง€, JVM์ด ํ˜ธํ™˜์„ฑ์„ ์–ด๋–ป๊ฒŒ ๊ฒ€์‚ฌํ•˜๋Š”์ง€, ์–ด๋–ค ๋ณ€๊ฒฝ์ด ์•ˆ์ „ํ•œ์ง€(ํ•„๋“œ ์ถ”๊ฐ€/์‚ญ์ œ), ์–ด๋–ค ๋ณ€๊ฒฝ์ด ์น˜๋ช…์ ์ธ์ง€(ํƒ€์ž… ๋ณ€๊ฒฝ, ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋กœ ์ด๋™). ๋˜ํ•œ transient/ static์˜ ์—ญํ• , writeObject/ readObject๋ฅผ ํ†ตํ•œ ์ปค์Šคํ…€ ์ง๋ ฌํ™” ๊ธฐ๋ฒ•, ์ด์ง„ ์ง๋ ฌํ™”์™€ XML/JSON์˜ ์ฐจ์ด, ํ˜ธํ™˜์„ฑ ๋ณด์žฅ ์ „๋žต๊ณผ ํ”ํ•œ ์˜ค๋ฅ˜(์˜ˆ: InvalidClassException)๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ๋ฒ„์ „ ๊ด€๋ฆฌ

    JAVA 25 SELF
    ๋ ˆ๋ฒจ 45,๋ ˆ์Šจ 3
    ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ Serializable ํด๋ž˜์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ง„ํ™”์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•: ํ•„๋“œ์™€ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฌด์—‡์ด ์ผ์–ด๋‚˜๋Š”์ง€, ํด๋ž˜์Šค ๋ฒ„์ „์ด serialVersionUID๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€, ์–ธ์ œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์–ธ์ œ ๊ทธ๋Œ€๋กœ ๋‘์–ด์•ผ ํ•˜๋Š”์ง€, readObject/ readFields๋ฅผ ์ด์šฉํ•œ โ€œ์ง€์—ฐโ€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ โ€œin-placeโ€ ๋ณ€ํ™˜์„ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ObjectInputStream.readClassDescriptor() ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ๋Š”์ง€. ๋‘ ๊ฐ€์ง€ ํด๋ž˜์Šค ๋ฒ„์ „๊ณผ ์ „ํ˜•์ ์ธ ์‹ค์ˆ˜๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ์‹ค์ „ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ, InvalidClassException์˜ ํ•จ์ •๋„ ์งš์–ด๋ด…๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 30
ํ•™์Šต
  • ๋“ฑ๋ก
  • Java ๊ณผ์ •
  • ๊ณผ์ œ ๋„์›€
  • ์š”๊ธˆ
  • Java ๋ฌธ๋ฒ•
์ปค๋ฎค๋‹ˆํ‹ฐ
  • ์‚ฌ์šฉ์ž
  • ์•„ํ‹ฐํด
  • ํฌ๋Ÿผ
  • ์ฑ„ํŒ…
  • ์„ฑ๊ณต ์‚ฌ๋ก€
  • ํ™œ๋™
  • ์ œํœด ํ”„๋กœ๊ทธ๋žจ
ํšŒ์‚ฌ
  • ํšŒ์‚ฌ ์†Œ๊ฐœ
  • ์—ฐ๋ฝ์ฒ˜
  • ํ›„๊ธฐ
  • ๋ณด๋„์ž๋ฃŒ์‹ค
  • CodeGym for EDU
  • FAQ
  • ์ง€์›
CodeGymCodeGym ์€(๋Š”) ์ฒ˜์Œ๋ถ€ํ„ฐ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•œ ์˜จ๋ผ์ธ ์ฝ”์Šค์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์ดˆ๋ณด์ž๊ฐ€ Java๋ฅผ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ์— ์™„๋ฒฝํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฆ‰์‹œ ๊ฒ€์ฆ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ 1200๊ฐœ ์ด์ƒ์˜ ๊ณผ์ œ์™€ Java ๊ธฐ์ดˆ ์ด๋ก ์˜ ํ•„์ˆ˜ ๋ฒ”์œ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต ์„ฑ๊ณต์„ ๋•๊ธฐ ์œ„ํ•ด ํ€ด์ฆˆ, ์ฝ”๋”ฉ ํ”„๋กœ์ ํŠธ, ํšจ์œจ์ ์ธ ํ•™์Šต๋ฒ• ๊ด€๋ จ ์ฝ˜ํ…์ธ , Java ๊ฐœ๋ฐœ์ž ๊ฒฝ๋ ฅ ๊ด€๋ จ ์ž๋ฃŒ ๋“ฑ ๋™๊ธฐ ๋ถ€์—ฌ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŒ”๋กœ์šฐํ•˜๊ธฐ
์ธํ„ฐํŽ˜์ด์Šค ์–ธ์–ด
English Deutsch Espaรฑol เคนเคฟเคจเฅเคฆเฅ€ Franรงais Portuguรชs Polski เฆฌเฆพเฆ‚เฆฒเฆพ ็ฎ€ไฝ“ไธญๆ–‡ เคฎเคฐเคพเค เฅ€ เฎคเฎฎเฎฟเฎดเฏ Italiano Bahasa Indonesia ็น้ซ”ไธญๆ–‡ Nederlands ๆ—ฅๆœฌ่ชž
ํ•œ๊ตญ์–ด
Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai ะฃะบั€ะฐั—ะฝััŒะบะฐ Filipino Turkish Azษ™rbaycan ะ ัƒััะบะธะน Vietnamese
"Programmers Are Made, Not Born" ยฉ 2026 CodeGym
MastercardVisa
"Programmers Are Made, Not Born" ยฉ 2026 CodeGym