Ich versuche, einen bevölkerten Baum in Datei mit ObjectOutputStream
zu schreiben, aber ich bekomme java.io.NotSerializableException
.Wie implementiere ich eine serialisierbare Java-Schnittstelle für ein benutzerdefiniertes Linked-List (Tree) -Objekt?
// build Huffman trie
HuffNode root = buildTrie(freq);
try{
FileOutputStream saveFile=new FileOutputStream("SaveObj.sav");
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(root);
save.close();
} catch(Exception exc){
exc.printStackTrace();
}
Hier ist mein Baum Klasse
private class HuffNode implements Comparable<HuffNode> , Serializable {
private final char ch;
private final int freq;
private final HuffNode left, right;
HuffNode(char ch, int freq, HuffNode left, HuffNode right) {
this.ch = ch;
this.freq = freq;
this.left = left;
this.right = right;
}
// is the node a leaf node?
private boolean isLeaf() {
assert ((left == null) && (right == null)) || ((left != null) && (right != null));
return (left == null) && (right == null);
}
// compare, based on frequency
public int compareTo(HuffNode that) {
return this.freq - that.freq;
}}
Warum die Serialisierung nicht funktioniert?
Normalerweise NotSerializableException kommt mit einer Nachricht, die Ihnen sagt, welche Klasse es nicht serialisierbar war. Können Sie die vollständige Fehlermeldung posten? –