Создайте свой собственный класс SerializableCookie
, который implements Serializable
, и просто скопируйте свойства 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
(чтобы оно не сериализовалось) и переопределить writeObject()
и readObject()
методы соответственно . Что-то вроде:
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
.