簡體   English   中英

如何為自定義鏈表(樹)對象實現Java Serializable接口?

[英]How do I implement Java Serializable interface for custom linkedlist(tree) object?

我正在嘗試使用ObjectOutputStream將填充的樹寫入文件,但是我正在獲取java.io.NotSerializableException

// 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(); 
}

這是我的樹班

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;
}}

為什么序列化不起作用?

HuffNode是您尚未向我們展示的其他一些類的內部類。

內部類的實例保留了封閉類的實例。 如果封閉的類不是可Serializable這將阻止內部類的實例被序列化。

HuffNode可能應該是靜態的嵌套類。

private static class HuffNode implements Comparable<HuffNode> , Serializable 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM