Problem beim Speichern von Objekten in einer Datei

Diskutiere Problem beim Speichern von Objekten in einer Datei im Java Basics - Anfänger-Themen Bereich.
G

Goldinho

Hallo miteinand.
Thema Schach. Folgender ActionListener hört auf meinen Menueintrag 'Stellung speichern' und soll nach dem Speichern-Dialog den Inhalt eines zweidimensionalen Arrays (bb_write) mit Objekten der Klasse Figur in einer Datei mit der Dateieindung .cm speichern:

Code:
public void actionPerformed(ActionEvent e) {
                        Figur[][] bb_write = brett.getStellung();
                        
                        JFileChooser chooser = new JFileChooser();
                        FileNameExtensionFilter cmFilter = new FileNameExtensionFilter("cm files (*.cm)", "cm");
                            
                            chooser.addChoosableFileFilter(cmFilter);
                            chooser.setFileFilter(cmFilter);

                        int v = chooser.showSaveDialog(null);
                        
                        if(v == JFileChooser.APPROVE_OPTION)
                        {     
                            File file = chooser.getSelectedFile();
                            try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file.getAbsolutePath() + ".cm"))) {
                                
                                out.writeObject(bb_write);
                                    
                                System.out.println("Speichern erfolgreich");
                                System.out.println();
                              } catch (Exception ex) {
                                System.out.println("Speichern nicht erfolgreich");
                                System.out.println();
                              }
                          }         
                        }
            
                        
                    });

Nach meinen Recherchen müsste das möglich sein, indem ich das Interface Serializable in meiner Klasse Figur implementiere. Hab isch gemacht und natürlich die Bib vorher importiert.

Ja, nun ist es allerdings so, dass der Speichervorgang zwar stattfindet und auch eine mit Kauderwelsch befüllte Datei entsteht, aber dennoch die Exception geworfen wird. Auch wenn ich die Datei wieder einlese, erhalte ich einen Fehler.
Es ändert übrigens auch nichts, wenn ich das zweidimensionale Array mit einer Doppelschleife auslese und dann die einzelnen Objekte in die Datei schreiben lasse.

Wo liegt mein Denk-/Codefehler?

Danke für die Hilfe
Christian
 
L

LimDul

Welche Exception?

Auch alle in der Klasse Figur verwendeten Objekte müssen das Interface Serializable implementieren.
Außerdem muss die Klasse Figur einen Konstruktor ohne Argumente haben.
 
G

Goldinho

Welche Exception?

Auch alle in der Klasse Figur verwendeten Objekte müssen das Interface Serializable implementieren.
Außerdem muss die Klasse Figur einen Konstruktor ohne Argumente haben.
Eigentlich verwende ich da keine weiteren Objekte. Es ist eine Superklasse.
Mit Argument meinst du Übergabewert?
Hier mal die Klasse:

Code:
package chess;

import java.awt.image.BufferedImage;
import java.io.Serializable;

public abstract class Figur implements Serializable {
        /**
     *
     */
    private static final long serialVersionUID = 1L;
        protected String farbe;
        protected String typ;
        protected String url;
        protected int pos_x, pos_y;
        protected int moved = 0;
        protected BufferedImage Bild;
        
        Figur(String f, String t) {
            farbe = f;
            typ = t;
            url = "/"+t+f+".png";
            ImageLoader Pic = new ImageLoader(url);
            Bild = Pic.getImage();
        }
        
        protected abstract boolean zugcheck(Board b, int vonh, int vonv, int nachh, int nachv);
}
 
G

Goldinho

Oh Mann, einfach ein transient vors BufferedImage setzen o_Oo_O und schon gehts

Danke :)
 
Thema: 

Problem beim Speichern von Objekten in einer Datei

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben