Я пытаюсь сериализовать ArrayList, но когда я десериализую, я возвращаю все возвращаемые значения. Не могу понять, почемуСериализация ArrayList в Java
public ArrayList<Uurwerken> maakUurwerk() {
lijst.add(new PolsAnaloog(time, "roze", false, "PA01"));
lijst.add(new PolsDigitaalTimer(time, "zwart", true, "PDT01"));
lijst.add(new PolsAnaloog(time, "rood", false, "PA02"));
lijst.add(new PolsAnaloogDatum(time, "zwart", true, "PAD01"));
lijst.add(new PolsDigitaalDatumTimer(time, "groen", true, "PADT01"));
lijst.add(new Wandklok(time, 10, 20, "geel", "Wand01"));
lijst.add(new Wandklok(time, 50, 30, "wit", "Wand02"));
lijst.add(new Wandklok(time, 5, 15, "blauw", "Wand03"));
lijst.add(new Wandklok(time, 60, 60, "bruin", "Wand04"));
lijst.add(new Wandklok(time, 80, 100, "wit", "Wand05"));
return lijst;}
Для выполнения сериализации я следующий код:
public SerialOutput() {
// TODO Auto-generated constructor stub
}
public void schrijfLijstWeg(ArrayList<Uurwerken> klok) {
FileOutputStream bestand = null;
ObjectOutputStream out = null;
try {
bestand = new FileOutputStream(Dir.PAD_Serial);
out = new ObjectOutputStream(bestand);
out.writeObject(klok);
} catch (IOException ex) {
System.out.println("Er is iets verkeerds gelopen bij het wegschrijven");
System.out.println(ex.getMessage());
}
finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public ArrayList<Uurwerken> leesLijst() {
FileInputStream bestand = null;
ObjectInputStream in = null;
ArrayList<Uurwerken> klokLijst = new ArrayList<Uurwerken>();
try {
bestand = new FileInputStream(Dir.PAD_Serial);
in = new ObjectInputStream(bestand);
klokLijst = (ArrayList<Uurwerken>) in.readObject();
}
catch (Exception ex) {
System.out.println("Er is iets verkeerd gelopen met het inlezen");
System.out.println(ex.getMessage());
ex.printStackTrace();
}
finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return klokLijst;
}
public void toonUurwerk(ArrayList<Uurwerken> uurwerk) {
Iterator<Uurwerken> it = uurwerk.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
Main содержит следующий код
public static void main(String[]args){
Fabriek f = new Fabriek();
Serializatie so = new Serializatie();
ArrayList <Uurwerken> list = new ArrayList<Uurwerken>();
list.addAll(f.maakUurwerk());
so.schrijfLijstWeg(list);
ArrayList<Uurwerken> temp = so.leesLijst();
so.toonUurwerk(temp);
}
Я попытался запустить so.toonUurwerk (список) и то я получаю правильные значения. Поэтому я нажимаю, что он сериализуется нормально; но идет не так в десерилизации. Как и сказано, когда я запускаю so.toonUurwerk, он возвращается со всеми «нулевыми» значениями.
и ваш вопрос ...? – WeMakeSoftware
Что именно происходит после сериализации, не могли бы вы объяснить «запасные адреса» –
p.s. это было бы намного проще, если бы это было не в голландском –