为什么我们不需要实现Serializable来序列化为xml

时间:2017-10-28 09:31:01

标签: java xml serialization

根据定义,类的可序列化由实现java.io.Serializable接口的类启用。未实现此接口的类将不会将其任何状态序列化或反序列化。

但是当我将它与XML一起使用时,对象的状态被保存为XML而不使用serializable。

如果没有Serializable界面我怎么能这样做?

以下是附件代码:

public class SerializeXml {public static void main(String[] args) {

Student s1=new Student("Sachin",1);
Student s2=new Student("Abhinav",2);


try {
    XMLEncoder x=new XMLEncoder(new BufferedOutputStream(new FileOutputStream("Students.xml")));
    x.writeObject(s1);
    x.writeObject(s2);
    x.close();
    System.out.println("Success");
}


catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();}}}

这是存储值的方法

public class Student{ public String name;public int rollno;

   public Student(String Name,int Rollno)
   {
        name=Name;
        rollno=Rollno;

   }

   public Student()
   {
        super();
   }}

1 个答案:

答案 0 :(得分:2)

Java序列化是一种特定的字节格式,用于序列化对象,利用ObjectOutputStream进行序列化,ObjectInputStream进行反序列化。通过实现标记接口Serializable,可以为此类型序列化“启用”对象。

但是,您要序列化为XML,这与普通的Java序列化机制无关,因此您不需要实现Serializable。相反,您需要遵循您正在使用的XML序列化框架的“规则”和期望。