【问题标题】:Object with object as atributes not working when deserializing [duplicate]反序列化时对象作为属性的对象不起作用[重复]
【发布时间】:2018-04-21 13:53:06
【问题描述】:

我实际上有一个名为 Ranking 的对象,它包含在 ArrayList of Objects 和一个 Integer 中。 像这样:

private static ArrayList<Acabada> partides = new ArrayList<Acabada>();
private int tipus_ordenacio;

当我尝试从 .ser 文件反序列化时,我没有得到所有属性,只有整数。当我尝试从数组中生成.size() 时,我得到0。似乎它正确地反序列化了整数,但没有反序列化对象数组。我该怎么办?下面是我的反序列化代码。

public domain.Ranking llegirRanking() {

        Ranking ranking;
        try {
            FileInputStream fileIn = new FileInputStream("ranking.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            ranking = (Ranking) in.readObject();
            System.out.println("tipus ordenacio :"+ranking.getTipus_ordenacio());
            System.out.println("tamany :"+ranking.getTamany());
            in.close();
            fileIn.close();


        }

【问题讨论】:

  • 您确定列表在序列化之前包含对象吗??
  • 是的,我在序列化之前打印了 arrayList 的大小,它给了我正确的数字。
  • 我的错。该列表是static。它不会被序列化:)。除非serialVersiinUID 字段是一种特殊情况,否则static 字段不会被序列化..
  • @CKing serialVersionUID 也不会以正常方式序列化。它在类描述符中发送一次,而不是与对象一起发送。
  • 该死的是真的!谢谢!!!

标签: java deserialization


【解决方案1】:

静态字段未序列化。请参阅 Javadoc 和对象序列化规范。

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多