所以我有这个对象数组列表,我想以二进制格式存储到 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/