Point2D.double nach XML

Status
Nicht offen für weitere Antworten.

A.T.

Bekanntes Mitglied
Hallo,
ich habe schon wieder eine Frage. Wird wohl öfter vorkommen in nächster Zeit...

Ich erzeuge mir ein Point2D.Double Feld mit Werten. Handelt sich hier um Messwerte für die Signalverarbeitung.
Code:
Point2D.Double[] points = new Point2D.Double[500];

for (int i = 0; i < points.length; i++) {
    points[i] = new Point2D.Double();
    points[i].setLocation((double)i,(double)500-i);
    System.out.println(points[i].getX()+ " "+ points[i].getY());
}

Die Werte werden richtig ausgegeben.

Ich möchte jetzt dieses Feld in eine XML Dateispeichern. Damit man die anderweitig verwenden kann aber auch um Daten die aus neuen Messungen kommen verwenden zu können.

Ein normales Point Feld kann ich ohne Problem in eine XML- Datei schreiben. Das Problem ist aber das es mit Point2D.Double Feldern nicht funktioniert! Warum ist das so?
Code:
Point[] points = new Point[500];
for (int i = 0; i < points.length; i++) {
    points[i] = new Point(i, 500-i);
}

FileOutputStream fos;
try {
    fos = new FileOutputStream("test.xml");
    XMLEncoder xmlEncoder = new XMLEncoder(fos);
    xmlEncoder.writeObject(points);
    xmlEncoder.close();
} 
catch (FileNotFoundException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace();
} 
catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Mit hilfe des Point Feldes kann ich leider nur int-Werte abspeichern ich bräuchte aber double. Also muss ich Point2D.Double verwenden.
Gibt es eine Möglichkeit dies in XML zu schreiben?

Danke schon mal für eure Hilfe!

Gruß Andreas
 
Hallo byto,
danke für deinen Tip! Habe zuerst darüber nachgedacht es so zu machen. Bin dann aber durch einen Tip auf eine andere Lösun gekommen. Und zwar ist Point2D.Double nicht serializable. Deshalb hat es nicht funktioniert. Wenn man jetzt wie unten gezeigt eine Classe erzeugt die von Point2D.Double erbt und Serializable implementiert dann klappt das!

Code:
import java.awt.geom.Point2D;
import java.io.Serializable;


public class MyPoint2D extends Point2D.Double implements Serializable {

  
   public double getX() {
        return super.x;
    }

    public double getY() {
        return super.y;
    }

    public void setX(double x) {
        super.x = x;
    }
    
    public void setY(double y) {
        super.y = y;
    }

    public void setLocation(double x, double y) {
        this.setX(x);
        this.setY(y);
    }

}

Gruß A.T.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben