У меня есть эта ошибка:проблемы с ObjectInputStream, возвращая неверное значение
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to domein.Auto
Значение я получаю это:
[[nummerplaat= 123xyz, merk= Toyota, model = Yaris, nummerplaat= 456abc, merk= Opel, model = Astra, nummerplaat= azerty, merk= BMW, model = Berline, nummerplaat= qwerty, merk= Toyota, model = Avensis, nummerplaat= 789cde, merk= Mercedes, model = C-klasse Berline, nummerplaat= 567xyz, merk= Renault, model = Fluence, nummerplaat= ab12ab, merk= Opel, model = Zafira, nummerplaat= xy12xy, merk= Peugeot, model = 308]]
Однако это должно быть:
[nummerplaat= 123xyz, merk= Toyota, model = Yaris, nummerplaat= 456abc, merk= Opel, model = Astra, nummerplaat= azerty, merk= BMW, model = Berline, nummerplaat= qwerty, merk= Toyota, model = Avensis, nummerplaat= 789cde, merk= Mercedes, model = C-klasse Berline, nummerplaat= 567xyz, merk= Renault, model = Fluence, nummerplaat= ab12ab, merk= Opel, model = Zafira, nummerplaat= xy12xy, merk= Peugeot, model = 308]
код, который я использую, является следующим:
public class ObjectStreamManipulaties {
public <E> List<E> geefObjecten(File naamBestand) {
List<E> li = new ArrayList<>();
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(naamBestand))) {
while (true) {
li.add((E) ois.readObject());
}
} catch (EOFException e) {
//EOF bereikt, continue
return li;
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(ObjectStreamManipulaties.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}
Я использую этот метод в следующем классе картографа:
package persistentie;
import java.util.ArrayList;
import java.util.List;
import domein.Auto;
import java.io.File;
public class AutoMapper {
private File naamBestand;
public AutoMapper(File bestand){
this.naamBestand = bestand;
}
public List<Auto> geefAutos() {
System.out.println(new ObjectStreamManipulaties().geefObjecten(naamBestand));
return new ObjectStreamManipulaties().geefObjecten(naamBestand);
}
}
Если я вручную поместить в список, как это все работает:
public List<Auto> geefAutos() {
List<Auto> lijstAutos = new ArrayList<Auto>();
lijstAutos.add(new Auto("123xyz", "Toyota", "Yaris"));
lijstAutos.add(new Auto("456abc", "Opel", "Astra"));
lijstAutos.add(new Auto("azerty", "BMW", "Berline"));
lijstAutos.add(new Auto("qwerty", "Toyota", "Avensis"));
lijstAutos.add(new Auto("789cde", "Mercedes", "C-klasse Berline"));
lijstAutos.add(new Auto("567xyz", "Renault", "Fluence"));
lijstAutos.add(new Auto("ab12ab", "Opel", "Zafira"));
lijstAutos.add(new Auto("xy12xy", "Peugeot", "308"));
return lijstAutos;
}
Это значение с «ли» это не правильно. Что не так в коде?
Какая строка в этом коде генерирует исключение? – RealSkeptic