Item 87. Custom Serialization Form
컀μ€ν μ§λ ¬ν ννλ₯Ό κ³ λ €ν΄λ³΄λΌ
μ§λ ¬νλ₯Ό κΌ μ¬μ©ν΄μΌνκ³ , κΈ°λ³Έ μ§λ ¬ν ννλ₯Ό μ¬μ©ν μ μλ κ²½μ°λ λ€μκ³Ό κ°λ€.
(κΈ°λ³Έ μ§λ ¬ν ννκ° μ ν©νλλΌλ λΆλ³μ 보μ₯κ³Ό 보μμ μν΄ readObject λ©μλλ₯Ό μ 곡νλ κ²μ΄ μ’λ€.)
μ§μ μ€κ³νμ λ, κΈ°λ³Έ μ§λ ¬ν ννμ κ±°μ κ°μ κ²°κ³Όκ° λμ¬ κ²½μ°
κ°μ²΄μ 물리μ ννκ³Ό λ Όλ¦¬μ λ΄μ©μ΄ κ°μ κ²½μ°
λ°λλ‘ κΈ°λ³Έ μ§λ ¬ν ννκ° μ ν©νμ§ μμ ν΄λμ€μ μλ λ€μκ³Ό κ°λ€.
public final class StringList implements Serializable {
private int size = 0;
private Entry head = null;
private static class Entry implements Serializable {
String data;
Entry next;
Entry previous;
}
// ...
}μ ν΄λμ€λ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§κ³ μλ€.
λ Όλ¦¬μ : μΌλ ¨μ λ¬Έμμ΄μ νν
물리μ : λ¬Έμμ΄λ€μ μ°κ²° 리μ€νΈλ‘ μ°κ²°νμ¬, κ° λ Έλμ μλ°©ν μ°κ²° μ λ³΄κ° κΈ°λ‘ λ¨
μ΄μ²λΌ 물리μ /λ Όλ¦¬μ ννμ μ°¨μ΄κ° μ‘΄μ¬ν λ κΈ°λ³Έ μ§λ ¬ν ννλ₯Ό μ¬μ©νλ©΄ λ€ κ°μ§ λ©΄μμ λ¬Έμ κ° λ°μνλ€.
κ³΅κ° APIκ° νμ¬ λ΄λΆ νν λ°©μμ λ¬Άμ: λ΄λΆ ꡬν λ°©μμΌλ‘ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©νμ§ μλλΌλ ν΄λΉ μ½λλ₯Ό μ κ±°ν μ μμ
λΆνμν κ³΅κ° μ°¨μ§: κ° λ°μ΄ν° λΏλ§ μλλΌ, λ΄λΆ ꡬνμΈ μ°κ²° μ 보κΉμ§ μ§λ ¬νλμ΄ μ μ₯λμ΄ λΆνμν κ³΅κ° μ°¨μ§
λΆνμν μκ° μλͺ¨: κ°μ²΄μ λͺ¨λ νλλ₯Ό μννλ©΄μ κ·Έ κ°μ²΄κ° μ°Έμ‘°νλ μλ λ€λ₯Έ κ°μ²΄λ€λ μ§λ ¬ν νλλ°, κ°μ²΄ κ·Έλνμ μμμ λν μ λ³΄κ° μμ΄ μ§λ ¬νμ λ§μ μκ°μ΄ μμλ¨
μ€ν μ€λ²νλ‘μ°: κΈ°λ³Έ μ§λ ¬ν κ³Όμ μ κ°μ²΄ κ·Έλνλ₯Ό μ¬κ· μννλλ°, κ·Έ κ³Όμ μμ μ€ν μ€λ²νλ‘μ°κ° λ°μν μ μμ
λλ¬Έμ κΈ°λ³Έ μ§λ ¬ν λ°©μμ νΌνλ κ²μ΄ μ’μλ°, μ μμ ν΄λμ€μ ν©λ¦¬μ μΈ μ§λ ¬ν ννλ λ€μκ³Ό κ°μ΄ ꡬνν΄ λ³Ό μ μλ€.
λ³κ²½ λ μ£Όμ νΉμ§μ λ€μκ³Ό κ°λ€.
size,headνλtransientμ μ©: μ§λ ¬ν λμμμ μ μΈEntryν΄λμ€SerializableμΈν°νμ΄μ€ μ κ±°: μ§λ ¬ν λμμμ μ μΈwriteObject,readObjectλ©μλ ꡬν: μ§λ ¬ν ννλ₯Ό 컀μ€ν νμ¬ μ§λ ¬ν/μμ§λ ¬ν μνdefaultWriteObject,defaultReadObjectλ©μλ νΈμΆ: ν₯ν 릴리μ€μμtransientνλκ° μΆκ°/μ κ±° μ νΈν κ°λ₯
λ€λ₯Έ μλ£κ΅¬μ‘° μ¬μ© μ
μ¬μ€ StringListμ κΈ°λ³Έ μ§λ ¬ν ννλ λ¬Έμ κ° λ§μμ§λ§, λ λ§μ λ¬Έμ κ° λ°μν μ μλλ°, ν΄μν
μ΄λΈμ κ²½μ° λ€μκ³Ό κ°μ λ¬Έμ κ° λ°μν μ μλ€.
ν΄μν μ΄λΈμ 물리μ μΌλ‘ ν€-κ° μνΈλ¦¬λ₯Ό λ΄μ ν΄μ λ²ν·μ μ°¨λ‘λ‘ λμ΄ν ννλ‘ μ μ₯
μ΄λ€ μνΈλ¦¬λ₯Ό μ΄λ€ λ²ν·μ λ΄μ μ§λ ν€μμ ꡬν ν΄μμ½λλ‘ κ²°μ‘λλλ°, κ³μ°ν λλ§λ€ λ¬λΌμ§λ κ²½μ°κ° μμ
μ§λ ¬ν ν μμ§λ ¬ννλ©΄ λ€λ₯Έ ν΄μμ½λκ° λμ€κ² λμ΄, νΌμλ κ°μ²΄κ° μμ±λ μ μμ
κ·Έ μΈ μ£Όμμ¬ν
transientν€μλλ₯Ό μ¬μ©νλ©΄ ν΄λΉ νλλ€μ μμ§λ ¬νλ λ ν΄λΉ νμ μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νλ¨ν΄λμ€ λ΄μμ λκΈ°ν λ©μ»€λμ¦ μ¬μ©νλ λ©μλ μ¬μ© μ,
writeObject,readObjectλ©μλμμλ λκΈ°ν λ©μ»€λμ¦μ μ¬μ©ν΄μΌ ν¨μ§λ ¬ν κ°λ₯ ν΄λμ€ λͺ¨λμ μ§λ ¬ λ²μ UIDλ₯Ό λͺ μμ μΌλ‘ λΆμ¬
μ§λ ¬ λ²μ UIDκ° μΌμΌν€λ μ μ¬μ μΈ νΈνμ± λ¬Έμ ν΄κ²° κ°λ₯
λ°νμμμ μμ±νλ μκ° λ¨μΆ κ°λ₯
κΈ°μ‘΄ λ²μ ν΄λμ€ νΈνμ± μ μ§ μ UID μ μ§ / νΈνμ± λμ μ UID λ³κ²½
Last updated
Was this helpful?