Java 使用out.writeObject(对象)时出现序列化错误

Java 使用out.writeObject(对象)时出现序列化错误,java,serialization,marker-interfaces,Java,Serialization,Marker Interfaces,我正在研究标记接口的行为,我使用下面的链接创建了自己的标记接口 然后比较Serializable接口的功能 现在我有了Employee类,它不扩展serializable接口 public class Employee { public String name; public String address; public int number; } 然后我有另一个SerializeDemo类,它尝试序列化对象 public class SerializeDemo { publi

我正在研究标记接口的行为,我使用下面的链接创建了自己的标记接口

然后比较Serializable接口的功能

现在我有了Employee类,它不扩展serializable接口

public class Employee {

public String name;
public String address;
public int number;
 }
然后我有另一个SerializeDemo类,它尝试序列化对象

public class SerializeDemo {

    public static void main(String [] args)
       {
          Employee e = new Employee();
          e.name = "AAAA";
          e.address = "BBB, India";
          e.number = 101;

          try
          {
             FileOutputStream fileOut =  new FileOutputStream("employee.ser");
             ObjectOutputStream out = new ObjectOutputStream(fileOut);
             out.writeObject(e); //Error on this line( ERRORLINE)
             out.close();
             fileOut.close();
             System.out.printf("Serialized data is saved in /tmp/employee.ser");
          }catch(IOException i)
          {
              i.printStackTrace();
          }
       }
}



Error : java.io.NotSerializableException: com.serializable.Employee
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)......
现在,当我删除行ERRORLINE时,它会编译并生成一个新文件,但没有对象。 我只是想知道怎么做;导致错误,, ObjectOutputStream实现可序列化接口,还是扩展到实现可序列化接口的其他类

How out.writeObject(e);内部检查它是否可序列化


我们将非常感谢您的帮助

您要序列化的对象必须标记为可序列化。

我想您还没有理解这个问题,请仔细阅读,我知道我们需要标记它们Serializable@MandeepSingh既然Employee并没有实现Serializable,那个么为什么你们会对这个异常感到惊讶呢?我想知道为什么它会在内部给出异常,在层次结构中,哪个类实现了Serializable,ObjectOutputStream扩展了哪个类让他知道这个行为ObjectOutputStream只是做了类似于
的事情,如果(!(对象实例可序列化))抛出新的NotSerializableException
。Employee对象未实现Serializable,因此引发异常。ObjectOutputStream本身不需要实现或扩展任何东西就可以做到这一点