将对象序列化为dat文件

时间:2013-10-19 18:31:16

标签: java serialization arraylist

所以我有这个数组的对象列表,我想以二进制格式存储到一个dat文件中。

objectA类具有此构造函数

public ObjectA(String aString,int aNumber ,String[] sampleA){
    this.aString = aString;
    this.aNumber = aNumber;
    this.sampleA= sampleA;
}

在另一个类文件中我在类上实例化了这个并用ObjectA对象填充了arraylist

      private static ArrayList<ObjectA> objectA = new ArrayList<ObjectA>();

我有这个方法

 private static void createFile() {
    System.out.println("Creating file...");

    try {
        FileOutputStream fileOut = new FileOutputStream("file.dat");
        ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);

            for (ObjectA o : objectA) {
                objectOut.writeObject(o); //write the object
            }

            objectOut.close(); //then close the writer

        }CATCH EXCEPTIONS***************{}

}

但是我在尝试运行时遇到了这个错误 createFile()出错! java.io.NotSerializableException:trycatch中的ObjectA 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您的ObjectA必须实施java.io.Serializable界面。

public ObjectA implements Serializable {

} 

但这不是唯一有效的方法。

实施java.io.Externalizable也是有效的。区别在于java.io.Serializable被称为标记接口(例如,接口不提供实现方法),而java.io.Externalizable强制您实现两个方法,因此提供了实现自定义序列化机制的必要手段。

public class ObjectA implements Externalizable {
    @Override
    public void writeExternal(ObjectOutput out) { ... }

    @Override
    public void readExternal(ObjectInput in) { ... }
}