implements Serializable
인 SerializableCookie
클래스를 만들고 Cookie
속성을 복사하는 중입니다. 다음과 같은 것 :
public class SerializableCookie implements Serializable {
private String name;
private String path;
private String domain;
// ...
public SerializableCookie(Cookie cookie) {
this.name = cookie.getName();
this.path = cookie.getPath();
this.domain = cookie.getDomain();
// ...
}
public String getName() {
return name;
}
// ...
}
모든 속성 자체도 직렬화 가능해야합니다. 프리미티브와는 별도로 String
클래스 자체는 이미 implements Serializable
이므로 걱정할 필요가 없습니다.
은 또한 당신은 또한 (가 직렬화하지 않도록)에 Cookie
transient
A와 속성을 장식/포장 및 writeObject()
및 readObject()
방법 accordingly을 대체 할 수 있습니다. 같은 뭔가 :
public class SerializableCookie implements Serializable {
private transient Cookie cookie;
public SerializableCookie(Cookie cookie) {
this.cookie = cookie;
}
public Cookie getCookie() {
return cookie;
}
private void writeObject(ObjectOutputStream oos) throws IOException {
oos.defaultWriteObject();
oos.writeObject(cookie.getName());
oos.writeObject(cookie.getPath());
oos.writeObject(cookie.getDomain());
// ...
}
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
ois.defaultReadObject();
cookie = new Cookie();
cookie.setName((String) ois.readObject());
cookie.setPath((String) ois.readObject());
cookie.setDomain((String) ois.readObject());
// ...
}
}
마지막으로 대신 List
에 그 클래스를 사용합니다.
감사합니다.이 방법이 효과가있을 것이라고 생각하지만 목표를 달성하기위한 더 쉬운 방법이 있기를 바랍니다. SDK에 준비가 된 기능이 있기를 바래서, 바퀴를 다시 발명 할 필요는 없지만 자바 이후로는해야 할 것 같습니다. 영구 쿠키를 사용하는 것이 일반적인 문제입니다. 미안하지만, 내 질문은 처음에는 불분명하다. 그러나 나는 그것을 업데이트했다. 어쨌든, 당신의 제안에 대해 감사드립니다. –
진짜 쿠키를 역 직렬화하는 순간에 유효하지 않을 수있는 상태를 나타내므로 실제 쿠키를 직렬화하지 않는 것이 좋습니다. 그냥 메모리에 보관하거나 이름/값 쌍만 '맵'에 저장하고 대신 직렬화하십시오. – BalusC
아주 좋은 답변을 주셔서 감사합니다. –