Item 90. Serialization Proxy Pattern
μ§λ ¬νλ μΈμ€ν΄μ€ λμ μ§λ ¬ν νλ‘μ μ¬μ©μ κ²ν νλΌ
Serializable
μΈν°νμ΄μ€λ₯Ό ꡬννλ μκ° μ μμ μΈ μμ±μ μ΄μΈμ λ°©λ²μΌλ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μκ² λλ©΄μ, λ²κ·Έλ 보μ λ¬Έμ μ λ
ΈμΆλκ² λλ€.
μ΄λ° μνμ ν¬κ² μ€μ¬μ£Όλ κΈ°λ²μΌλ‘ μ§λ ¬ν νλ‘μ ν¨ν΄μ΄ μλ€.
ꡬν λ°©λ²
μ§λ ¬ν νλ‘μ ν¨ν΄μ ꡬν λ°©λ²μ λ€μκ³Ό κ°λ€.
λ°κΉ₯ ν΄λμ€μ λ Όλ¦¬μ μνλ₯Ό νννλ μ€μ²© ν΄λμ€λ₯Ό μ€κ³ν΄
private static
μΌλ‘ μ μΈμ€μ²© ν΄λμ€μ μμ±μλ λ¨ νλλ‘ μ ννλ©°, λ°κΉ₯ ν΄λμ€λ₯Ό 맀κ°λ³μλ‘ λ°μ λ¨μν λμ΄μ¨ μΈμ€ν΄μ€ λ°μ΄ν°λ₯Ό 볡μ¬
λ°κΉ₯ ν΄λμ€μ μ§λ ¬ν νλ‘μ λͺ¨λ
Serializable
μ ꡬν
μμ²λΌ ꡬνλ κ°κ°μ λ©μλλ€μ μλμ κ°μ μν μ μννλ©΄μ 보μ λ¬Έμ λ₯Ό ν΄κ²°νκ² λλ€.
writeReplace
: λ°κΉ₯ ν΄λμ€ μΈμ€ν΄μ€ λμ μ§λ ¬ν νλ‘μ κ°μ²΄λ₯Ό λ°ννμ¬ μ§λ ¬ν μ€μ μμ±μ νΈμΆμ λ§μreadObject
: μμ§λ ¬νκ° μ§μ μ μΌλ‘ μ΄λ£¨μ΄μ§μ§ μλλ‘ μμΈλ₯Ό λμ Έ νλ‘μ κ°μ²΄λ₯Ό ν΅ν΄μλ§ μμ§λ ¬νκ° μ΄λ£¨μ΄μ§λλ‘ ν¨readResolve
: μμ§λ ¬νλ νλ‘μ κ°μ²΄λ₯Ό λ°κΉ₯ ν΄λμ€ μΈμ€ν΄μ€λ‘ λ체νμ¬ λ°ν
μ₯μ
μ§λ ¬ν νλ‘μ ν¨ν΄μ μ¬μ©νλ©΄ μλμ κ°μ μ₯μ μ μ»μ μ μλ€.
μ§μ ν λΆλ³ ν΄λμ€: λ©€λ² νλ final μ μΈνμ¬ λΆλ³μ± 보μ₯ κ°λ₯
μμ§λ ¬ν μ ν¨μ± κ²μ¬ λΆνμ: μ§λ ¬ν λμμ΄ μ§μ μ μΌλ‘ λμ§ μκΈ° λλ¬Έμ μμ§λ ¬ν κ³Όμ μμ μ ν¨μ± κ²μ¬λ₯Ό ν νμκ° μμ
μμ§λ ¬ν μΈμ€ν΄μ€ != μλμ μΈμ€ν΄μ€: μμ§λ ¬νλ μΈμ€ν΄μ€κ° μλμ μΈμ€ν΄μ€μ λ€λ₯΄κ² λμ΄λ λ¬Έμ κ° μμ
μ΄ μ€ 3λ²μ λν μ₯μ μ EnumSet
ν΄λμ€λ₯Ό μ¬μ©ν μμλ₯Ό ν΅ν΄ νμΈν μ μλ€.
EnumSet ν΄λμ€μ μ§λ ¬ν νλ‘μ ν¨ν΄
EnumSet
ν΄λμ€ μμ± μ RegularEnumSet
κ³Ό JumboEnumSet
λ κ°μ§ μΈμ€ν΄μ€λ₯Ό λ°ννκ² λλλ°, μ΄ λ μΈμ€ν΄μ€μ μ°¨μ΄λ λ€μκ³Ό κ°λ€.
RegularEnumSet
μΈμ€ν΄μ€: 64κ° μ΄νμ μμλ₯Ό κ°μ§ λ μ¬μ©JumboEnumSet
μΈμ€ν΄μ€: 64κ° μ΄μμ μμλ₯Ό κ°μ§ λ μ¬μ©
64κ°μ§λ¦¬ μ΄κ±° νμ
μ κ°μ§ RegularEnumSet
μΈμ€ν΄μ€λ₯Ό μ§λ ¬ννκ³ μμλ₯Ό μΆκ°ν ν μμ§λ ¬ννλ©΄ JumboEnumSet
μΈμ€ν΄μ€κ° μμ±λμ΄μΌ νλλ°,
μ΄λ₯Ό μν΄ EnumSet
ν΄λμ€λ μ§λ ¬ν νλ‘μ ν¨ν΄μ μ¬μ©ν΄ μ μ ν μΈμ€ν΄μ€λ₯Ό μμ±νλλ‘ κ΅¬νλμ΄ μλ€.
Last updated
Was this helpful?