2017-10-28 6 views
2

定義により、クラスのシリアライズ機能はjava.io.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(); 
    }} 

答えて

1

のJavaシリアライゼーションのシリアル化のためにObjectOutputStreamObjectInputStreamを利用して、オブジェクトをシリアル化するための特定のバイト・フォーマットであるを格納するためのものですデシリアライズのため。マーカーインタフェースSerializableを実装することによって、このタイプのシリアライゼーションに対してオブジェクトが「有効」になります。

しかし、通常のJavaシリアル化メカニズムとは関係ないXMLにシリアル化しているため、Serializableを実装する必要はありません。代わりに、使用しているXMLシリアル化フレームワークの「ルール」と期待に従う必要があります。

関連する問題