【问题标题】:Serialize objects into a dat file将对象序列化为 dat 文件
【发布时间】:2013-10-19 18:31:16
【问题描述】:

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

objectA 类有这个构造函数

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

在另一个类文件中,我在该类上实例化了它,并用 ObjectA 对象填充了数组列表

      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 有什么想法吗?

【问题讨论】:

    标签: java serialization arraylist


    【解决方案1】:

    您的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) { ... }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-23
      • 2011-04-09
      • 2021-02-13
      • 1970-01-01
      • 2023-04-02
      • 2023-01-15
      • 2012-01-08
      • 2011-03-26
      相关资源
      最近更新 更多