Javaシーケンス化とは何ですか.javaシーケンス化を実現するにはどうすればいいですか.(例を書く)

2330 ワード

シーケンス化:
1つのオブジェクトを1つのファイルに保存できるので、ストリームでネットワーク上で転送することができ、ファイルの内容を読み取り、1つのオブジェクトに変換することができます.
オブジェクトストリームを扱うメカニズムであり,オブジェクトストリームとはオブジェクトの内容をストリーミングすることである.対流化されたオブジェクトに対して読み書き操作を行うこともできるし、ストリーミングされたオブジェクトをネットワーク間に伝送することもできる.シーケンス化は,オブジェクトストリームの読み書き操作に起因する問題を解決するためである.
シーケンス化の実装:
シーケンス化する必要があるクラスには、実装する必要がないSerializableインタフェースが実装されます.implements Serializableは、オブジェクトがシーケンス化可能であることを示すためにのみ、出力ストリーム(FileOutputStreamなど)を使用してObjectOutputStreamオブジェクトを構築し、次にObjectOutputStreamオブジェクトのwriteObject(Object obj)を使用します.メソッドはパラメータobjのオブジェクトを書き出し(すなわちその状態を保存)することができ,復元するには入力ストリームを用いる.
import java.io.*;
 
public class SerializationDemo{
public static void main(String args[]){
 
   //Object serialization
   try{
    MyClass object1=new MyClass("Hello",-7,2.7e10);
    System.out.println("object1:"+object1);
    FileOutputStream fos=new FileOutputStream("serial.txt");
    ObjectOutputStream oos=new ObjectOutputStream(fos);
    oos.writeObject(object1);
    oos.flush();
    oos.close();
    }
   catch(Exception e){
    System.out.println("Exception during serialization:"+e);
    System.exit(0);
    }
 
   //Object deserialization
   try{
    MyClass object2;
    FileInputStream fis=new FileInputStream("serial.txt");
    ObjectInputStream ois=new ObjectInputStream(fis);
    object2=(MyClass)ois.readObject();
    ois.close();
    System.out.println("object2:"+object2);
    }
   catch(Exception e){
    System.out.println("Exception during deserialization:"+e);
    System.exit(0);
    }
   }
}
 
 
@SuppressWarnings("serial")
class MyClass implements Serializable{
 
//private static final long serialVersionUID = 7279921812756335413L;
 
//private static final long serialVersionUID = 1L;
String s;
int i;
double d;
public MyClass(String s,int i,double d){
this.s=s;
this.i=i;
this.d=d;
}
public String toString(){
return "s="+s+";i="+i+";d="+d;
}
}

出力:object 1:s=Hello;i=-7;d=2.7E10 object2:s=Hello;i=-7;d=2.7E10