Java 对象是否在序列化过程中更改?
我正在尝试序列化我的对象,但是当我反序列化所有内容时设置为null。我一定错过了什么,请帮忙。 以下是序列化部分:Java 对象是否在序列化过程中更改?,java,serialization,objectinputstream,Java,Serialization,Objectinputstream,我正在尝试序列化我的对象,但是当我反序列化所有内容时设置为null。我一定错过了什么,请帮忙。 以下是序列化部分: public static void write(Map<String, Allat> m){ try { FileOutputStream fileOut = new FileOutputStream("savefile.txt"); ObjectOutputStream out = new ObjectOutputStream(fileO
public static void write(Map<String, Allat> m){
try {
FileOutputStream fileOut = new FileOutputStream("savefile.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
//m has the correct parameters at this point
out.writeObject(m);
out.close();
fileOut.close();
}
catch(IOException i) {
i.printStackTrace();
}
System.out.println("Success.");
}
public static Map<String, Allat> read(String path) {
Map<String, Allat> m;
try {
FileInputStream fileIn = new FileInputStream(path);
ObjectInputStream in = new ObjectInputStream(fileIn);
m = (Map<String, Allat>) in.readObject();
in.close();
fileIn.close();
}
catch(IOException i) {
System.out.println("IO Exception");
i.printStackTrace();
return null;
}
catch(ClassNotFoundException c) {
System.out.println("Allat class not found");
c.printStackTrace();
return null;
}
return m;
}
以下是反序列化部分:
public static void write(Map<String, Allat> m){
try {
FileOutputStream fileOut = new FileOutputStream("savefile.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
//m has the correct parameters at this point
out.writeObject(m);
out.close();
fileOut.close();
}
catch(IOException i) {
i.printStackTrace();
}
System.out.println("Success.");
}
public static Map<String, Allat> read(String path) {
Map<String, Allat> m;
try {
FileInputStream fileIn = new FileInputStream(path);
ObjectInputStream in = new ObjectInputStream(fileIn);
m = (Map<String, Allat>) in.readObject();
in.close();
fileIn.close();
}
catch(IOException i) {
System.out.println("IO Exception");
i.printStackTrace();
return null;
}
catch(ClassNotFoundException c) {
System.out.println("Allat class not found");
c.printStackTrace();
return null;
}
return m;
}
调用read方法后,结果对象中的所有内容都设置为null/0。
Allat类实现了java.io.Serializable。谢谢你的帮助 您是否尝试序列化单个对象而不是整个映射?这行吗?不行。。。它也不适用于单个对象。如果是这样的话,你能提供一个最小的例子,以便我们重现确切的问题吗?我的意思是包括Allat类和一个main方法来查看您实际如何运行程序。我建议您忽略某个异常。注意:如果您得到ClassNotFoundException,则不一定是未找到的Allat类。不要在错误消息中做出任何假设。使用一个例外:不要自己编。