schneemensch
Grünschnabel
Hallo zusammen,
ich bin zur Zeit dabei für meine OOP Vorlesung ein Tool zur Milchviehverwaltung (ja, kein Scherz
) zu schreiben.
Die Viecher werden zu Beginn in unterschiedliche Vectoren eingelesen, dann vom Nutzer bearbeitet... und sollen am Ende auf die Festplatte geschrieben werden.
Allerdings werden die Objekte nicht korrekt (oder zumindest nicht so wie ich mir das vorstelle) serialisiert.
Nach ausgiebigem googeln und lesen der der Dokumentationen habe ich folgendes Testprogramm gebastelt um die Serialisierung mal ein bisschen zu testen:
(Die Aufteilung in mehrere Klassen habe ich vorgenommen um die Architektur meines eigendlichen Programmes besser darzustellen)
Class: MoohTest
Class: DatenSpeichern
Class: DatenLesen
Das ganze Liefert als Ausgabe:
passt nicht
passt nicht
passt
Es hat also nur die Serialisierung des Integer-Arrays geklappt.
Ist es mit Java nicht möglich komplexere Objekte zu serialisieren oder steckt in dem Ganzen ein denkfehler?
ich bin zur Zeit dabei für meine OOP Vorlesung ein Tool zur Milchviehverwaltung (ja, kein Scherz

Die Viecher werden zu Beginn in unterschiedliche Vectoren eingelesen, dann vom Nutzer bearbeitet... und sollen am Ende auf die Festplatte geschrieben werden.
Allerdings werden die Objekte nicht korrekt (oder zumindest nicht so wie ich mir das vorstelle) serialisiert.
Nach ausgiebigem googeln und lesen der der Dokumentationen habe ich folgendes Testprogramm gebastelt um die Serialisierung mal ein bisschen zu testen:
(Die Aufteilung in mehrere Klassen habe ich vorgenommen um die Architektur meines eigendlichen Programmes besser darzustellen)
Class: MoohTest
Code:
import java.util.GregorianCalendar;
import java.util.Vector;
import dataAccessLayer.*;
public class MoohTest
{
@SuppressWarnings("unchecked")
public static void main(String[] args)
{
Vector<String[]> v1=new Vector<String[]>();
String[] data1 =new String[10];
data1[5]="testeMich";
v1.add(data1);
DatenSpeichern.speichern(v1);
v1.clear();
v1 = DatenLesen.lesen("test.dat");
if(data1[5].toString()==v1.firstElement()[5].toString())
{
System.out.println("passt");
}
else
{
System.out.println("passt nicht");
}
//gegenversuch
Vector<GregorianCalendar[]> v2=new Vector<GregorianCalendar[]>();
GregorianCalendar[] data2 =new GregorianCalendar[10];
data2[5]=new GregorianCalendar(2007,1,1);
v2.add(data2);
DatenSpeichern.speichern(v2);
v2.clear();
v2 = DatenLesen.lesen("test.dat");
if(data2[5].getTime()==v2.firstElement()[5].getTime())
{
System.out.println("passt");
}
else
{
System.out.println("passt nicht");
}
//gegenversuch
Vector<int[]> v3=new Vector<int[]>();
int[] data3 =new int[10];
data3[5]=47;
v3.add(data3);
DatenSpeichern.speichern(v3);
v3.clear();
v3 = DatenLesen.lesen("test.dat");
if(data3[5]==v3.firstElement()[5])
{
System.out.println("passt");
}
else
{
System.out.println("passt nicht");
}
}
}
Class: DatenSpeichern
Code:
package dataAccessLayer;
import java.io.*;
import java.util.Vector;
public class DatenSpeichern
{
public static void speichern(Vector data)
{
try
{
FileOutputStream datei = new FileOutputStream("test.dat");
ObjectOutputStream speichern = new ObjectOutputStream(datei);
speichern.writeObject(data);
}
catch(IOException e){}
}
}
Class: DatenLesen
Code:
package dataAccessLayer;
import java.io.*;
import java.util.Vector;
public class DatenLesen
{
@SuppressWarnings("unchecked")
public static Vector lesen(String dateiName)
{
try
{
FileInputStream datei=new FileInputStream(dateiName);
ObjectInputStream lesen = new ObjectInputStream(datei);
Vector giveback = (Vector)lesen.readObject();
return giveback;
}
catch(ClassNotFoundException e){System.out.println("fehler beim Lesen");return new Vector();}
catch(FileNotFoundException e){System.out.println("fehler beim Lesen");return new Vector();}
catch(IOException e){System.out.println("fehler beim Lesen");return new Vector();}
}
}
Das ganze Liefert als Ausgabe:
passt nicht
passt nicht
passt
Es hat also nur die Serialisierung des Integer-Arrays geklappt.
Ist es mit Java nicht möglich komplexere Objekte zu serialisieren oder steckt in dem Ganzen ein denkfehler?