Re: Trying to save a Point2D.Double object
e_matthes@hotmail.com wrote:
Hello everyone,
I have an application which uses many Point2D.Double objects, and now
that I am trying to write code which saves objects from the
application, I discover the whole mess with Point2D.Double being not
serializable since 1999(!).
With a little research, I found what I thought was a workaround,
creating a custom, serializable class which extends Point2D.Double. It
is not working, though; when I save an object of the extended class, it
always reads back as (0.0, 0.0).
....
class DoublePoint extends Point2D.Double implements Serializable {
public DoublePoint() {
super();
}
public DoublePoint(double x, double y) {
super(x, y);
}
}
Doesn't a serializable subsclass of a non-serializable class have to
handle serializing the superclass data explicitly?
Your program works if you add to the DoublePoint code:
private void writeObject(java.io.ObjectOutputStream out)
throws IOException{
out.writeDouble(getX());
out.writeDouble(getY());
}
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException{
double x = in.readDouble();
double y = in.readDouble();
setLocation(x,y);
}
output:
Initialized pointToSave: Point2D.Double[1.2, 0.3]
Changed pointToSave: Point2D.Double[6.66, 6.666]
Read pointToSave: Point2D.Double[1.2, 0.3]
Patricia