Я должен сделать связанный список Сериализуемым.Я понимаю основы и сделал это успешно, но это бросило меня в тупик.
Список состоит из узлов, а класс получен из интерфейса.«Данные» для каждого узла остаются неопределенными, то есть в них может содержаться любой тип данных или объект.В приведенном ниже фрагменте тип «М».Как мне указать, какой тип данных может быть в нем, чтобы сделать его Serializable?
В настоящее время я тестирую его с сохранением Strings и Doubles, но скоро буду использовать объект make с пользовательским классом.Я могу подтвердить, что список создан правильно.
Класс LinkedList:
public class LinkedMovieList<M extends Comparable<M>>
implements GVLinkedList<M>, Serializable {
private class Node {
public M data;
public Node next;
Node(M element) {
data = element;
next = null;
}
}
Node head, tail;
Метод сериализации:
private GVLinkedList<Double> allVar, empty;
allVar = new DoublyLinkedMovieList<>();
empty = new DoubleLinkedMovieList<>();
private Double[] doubleList = {1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2, 9.2};
for (Double v : doubleList){
allVar.insertLast(v);
}
File linkedFile = new File("LinkedMovieList.dat");
try{
FileOutputStream fileOut = new FileOutputStream(linkedFile);
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
objectOut.writeObject(allVar); //NotSerializableException thrown
objectOut.close();
FileInputStream fileIn = new FileInputStream(linkedFile);
ObjectInputStream objectIn = new ObjectInputStream(fileIn);
empty = (GVLinkedList<Double>) objectIn.readObject();
objectIn.close();
}
catch (FileNotFoundException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
catch (ClassNotFoundException e){
e.printStackTrace();
}
Любая помощь будет принята с благодарностью!Я чувствую, что это нечто простое, что я должен знать ... Stack Trace:
java.io.NotSerializableException: edu.gvsu.cs163.LinkedMovieList$Node
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at edu.gvsu.cs163.Test.LinkedListTestDouble.isSerializable(LinkedListTestDouble.java:321)