为什么我们不需要实现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序列化框架的“规则”和期望值。