【发布时间】:2016-04-14 05:21:18
【问题描述】:
我在将对象写入文件和从 Java 文件中读取对象时都遇到了问题。我必须在一个类中为每个类编写一个方法,该类扩展给我们的接口。我现在的代码如下:
package onlineTest;
import java.util.*;
import java.io.*;
public class SystemManager implements Manager, Serializable {
...
private static final long serialVersionUID = 1L;
public void saveManager(Manager manager, String fileName){
try{
FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
objectOut.writeObject(manager);
objectOut.close();
}catch(IOException e){
e.printStackTrace();
}
}
public Manager restoreManager(String fileName){
Manager m = null;
try{
FileInputStream fileIn = new FileInputStream(fileName);
ObjectInputStream objectIn = new ObjectInputStream(fileIn);
m = (Manager) objectIn.readObject();
objectIn.close();
fileIn.close();
}catch(IOException e){
e.printStackTrace();
return null;
}catch(ClassNotFoundException f){
f.printStackTrace();
return null;
}
return m;
}
}
唯一必须保留的部分是这两个方法的标题,其中的任何内容都可以更改,但我不能更改任何标题。当我尝试运行它时,它给了我一个错误,我在 saveManager 方法中写入 objectOut.writeObject(manager) 但我无法弄清楚我做错了什么。
【问题讨论】:
-
“它给了我一个错误” 错误是什么?是运行时还是编译时?请提供编译错误或堆栈跟踪的全文。
-
你的班级是否实现了
Serializable? -
Manager是否扩展Serializable? -
Manager 不扩展 Serializable,但我不相信我可以更改它,所以它确实扩展了 Serializable。对于错误,它给了我一个 NotSerializableException。
-
@jblackman76 在这种情况下,您需要澄清问题。
Manager是一个接口,如果该接口没有扩展Serializable,您将不得不求助于一些非常可怕的事情(例如,调用getClass(),然后使用反射找出您需要保存的所有字段)。
标签: java serialization interface