Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java序列化自定义链表_Java_Serialization - Fatal编程技术网

java序列化自定义链表

java序列化自定义链表,java,serialization,Java,Serialization,我不想使用提供的LinkedList类,所以我创建了一个自定义链接列表。问题是我担心当我用默认的读/写对象功能序列化这个对象时可能会出现堆栈溢出问题 我在另一篇SO帖子中看到,您必须使用自定义序列化,如下所示: MyClass{ transient Node header; private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(

我不想使用提供的LinkedList类,所以我创建了一个自定义链接列表。问题是我担心当我用默认的读/写对象功能序列化这个对象时可能会出现堆栈溢出问题

我在另一篇SO帖子中看到,您必须使用自定义序列化,如下所示:

MyClass{

    transient Node header; 

    private void writeObject(ObjectOutputStream out) throws IOException {
        out.defaultWriteObject();
        for (Entry e = header.next; e != header; e = e.next)
        out.writeObject(e.element);
    }
    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.defaultReadObject();
    }



}
这是节点类

Node{
    transient Node next;
    transient Node prev;
    private void writeObject(ObjectOutputStream out) throws IOException {
        out.defaultWriteObject();
        for (Entry e = header.next; e != header; e = e.next)
        out.writeObject(e.element);
    }
    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.defaultReadObject();
    }

}
我有多么奇怪,因为我使头字段是暂时的,当我读这个类时,它不是空的吗?如何使其引用标头节点


对于节点也是一样,因为当我读取对象时,next和prev字段是瞬态的。字段将为空。我如何使它们保持彼此的引用?是的,你是对的,它们将为空

您必须以与实现写对象类似的方式实现读对象:

while(elementsToRead()); // you need to know somehow how long you need to read
{
    add(inputStream.readObject());
}
我建议研究Java库中列表的读写对象的实现

为什么不能使用Java链表?如果缺少某些内容,您是否考虑过扩展LinkedList

您基本上可以查看链表源代码并了解序列化是如何执行的