Java 对象是否在序列化过程中更改?

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

我正在尝试序列化我的对象,但是当我反序列化所有内容时设置为null。我一定错过了什么,请帮忙。 以下是序列化部分:

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类。不要在错误消息中做出任何假设。使用一个例外:不要自己编。