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

问题描述:

根据定义,一个类的可序列化是由实现java.io.Serializable接口的类来实现的。没有实现这个接口的类将不会有任何状态序列化或反序列化。为什么我们不需要实现Serializable来序列化为xml

但是,当我将它与XML一起使用时,对象的状态被保存到XML中而不使用可序列化。

如何在没有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(); 
    }} 

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

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