序列化以反序列化订单信息

时间:2013-02-12 00:58:23

标签: java serialization deserialization

在我的一次采访中,采访者给了我一个场景,我通过FTP获取文件,每个字段用逗号分隔存储的订单信息。我需要使用序列化将此信息存储在Order类的对象中。

档案格式: 订单ID,securityName,买/卖,订单类型,数量,价格

Class Order
{
    int orderId;
    String securityName;
    ....

}

我想在这里提一下,该文件是由其他一些应用程序生成的,我们必须使用该应用程序生成的文件。我很困惑,我怎么办,因为那里没有编组,所以我如何解组数据呢?

2 个答案:

答案 0 :(得分:1)

  1. 读取CSV文件以获取订单对象列表。
  2. 使用序列化将包装器对象存储在文件中。

答案 1 :(得分:0)

从技术上讲,您将使用 反序列化 将文件数据存储到对象中。练习的目的是通过在类中实现以下方法来识别您可以实现对象的自定义序列化/反序列化:

 private void writeObject(java.io.ObjectOutputStream stream)
     throws IOException;

private void readObject(java.io.ObjectInputStream stream)
     throws IOException, ClassNotFoundException;

在您的特定情况下,您将实现readObject方法,从逗号分隔值文件中读取,并使用获得的值填充对象的实例。类似的东西:

class Order implements Serializable {
    private static final long serialVersionUID = -6730370200519884700L;

    // Instance variables, Constructors, Getters/Setters

    private void readObject(ObjectInputStream stream) {
        // obtain data from stream and use
    }
}

很明显, 这是伪代码 ,但它应该让你知道从哪里开始。