Item 90. Serialization Proxy Pattern
ꡬν λ°©λ²
class Period implements Serializable {
// final ν€μλ μ¬μ©
private final Date start;
private final Date end;
public Period(Date start, Date end) {
this.start = start;
this.end = end;
}
// μ§λ ¬νν κ°μ²΄λ₯Ό λ체ν λ€λ₯Έ κ°μ²΄λ₯Ό λ°ννλ λ©μλ
private Object writeReplace() {
return new SerializationProxy(this);
}
// μμ§λ ¬ν κ³Όμ μμ νΈμΆ
private void readObject(ObjectInputStream stream) throws InvalidObjectException {
throw new InvalidObjectException("Proxy required");
}
private static class SerializationProxy implements Serializable {
private static final long serialVersionUID = 234098243823485285L; // μ무 κ°μ΄λ μκ΄ μμ
private final Date start;
private final Date end;
SerializationProxy(Period p) {
this.start = p.start;
this.end = p.end;
}
// μμ§λ ¬νλ κ°μ²΄λ₯Ό λμ ν κ°μ²΄λ₯Ό λ°ννλ μν μ μννλ λ©μλ
private Object readResolve() {
return new Period(start, end);
}
}μ₯μ
EnumSet ν΄λμ€μ μ§λ ¬ν νλ‘μ ν¨ν΄
Last updated