在这种情况下,默认的序列化表单是否合适

时间:2014-06-26 06:46:54

标签: java serialization

在Effective Java第二版中,作为使用默认序列化表单的一个不好的例子,给出了这个类:

// Awful candidate for default serialized form
public final class StringList implements Serializable {
    private int size = 0;
    private Entry head = null;
    private static class Entry implements Serializable {
        String data;
        Entry next;
        Entry previous;
    }
    ... // Remainder omitted
}

给出的原因是"默认的序列化表单将精心镜像链表中的每个条目 以及两个方向上条目之间的所有链接。"然后它继续说我们应该将这个类序列化为一个字符串数组。

在Java EE 6教程中是另一个例子 - the order application。在其中,还有一个类Part,它也使用默认的序列化形式,如下所示:

public class Part implements java.io.Serializable {
    private static final long serialVersionUID = -3082087016342644227L;
    private Date revisionDate;
    private List<Part> parts;
    private Part bomPart;
    private Serializable drawing;
    private String description;
    private String partNumber;
    private String specification;
    private VendorPart vendorPart;
    private int revision;
    ...
}

由于Part包含ListPart,我们是否有同样的问题?默认的序列化表单将递归序列化包含在另一个Part对象中的每个Part对象。

0 个答案:

没有答案