java - 将对象序列化到 dat 文件中

标签 java serialization arraylist

所以我有这个对象数组列表,我想以二进制格式存储到 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.NotSerializedException:trycatch 中的 ObjectA 有什么想法吗?

最佳答案

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

public ObjectA implements Serializable {

} 

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

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

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

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

关于java - 将对象序列化到 dat 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469549/

相关文章:

java - 程序不接受第一个搜索词的输入

JavaSparkContext 不可序列化

c# - 具有特定时区的 Javascript 整数到日期时间

java - 无法在数组列表中添加值?

java - 连接 double 型和字符串进行计算

java - NullPointerException:尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)'

java - 碧 Jade 报告 : how to customize JasperViewer so that it could only export in one format?

java - 如何强制 Swagger Codegen 生成未从任何其他对象引用的枚举?

java - 如何将 solr 日期转换为 javascript 日期?

java - 如何使用 Jackson 的 ObjectMapper.readerForUpdating 忽略某些字段