Serializableの意味

11885 ワード

まずSerializableの主な役割はクラスのインスタンスを永続化して保存することであり,シーケンス化は保存であり,逆シーケンス化は読み取りである.保存してもローカルに保存するとは限らず、遠くまで保存することもできます.クラスは必ずSerializableを実現しなければならない.
≪インスタンス|Instance|emdw≫
操作する学生クラス
import java.io.Serializable;

public class Student implements Serializable {
    private  int id;
    private  String name;
    private  String sex;
    //      serialVersionUID
    private static final long serialVersionUID = 8735132092273200831L;
    //       transient     Serializable           
    transient private String school;

    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}


テスト用のインスタンス
import java.io.*;

public class Serializable {
    public static void main(String[] args){
//        writeObj();
        readObj();
    }

    /**
     *           
     */
    public static void writeObj(){
        Student s=new Student(1,"  "," ");
        try{
            ObjectOutputStream objectOutputStream=new ObjectOutputStream(new FileOutputStream("obj.txt"));
            objectOutputStream.writeObject(s);
            objectOutputStream.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    /**
     *                  
     */
    public static void readObj(){
        try{
            ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("obj.txt"));
            try{
                Object object=objectInputStream.readObject();
                Student student=(Student)object;
                System.out.println(student);
            }catch (ClassNotFoundException e){
                e.printStackTrace();
            }
        }catch(IOException e){
            e.printStackTrace();
        }

    }
}


テストメソッド
  • mainメソッドでwriteObjを実行し、インスタンス化された学生クラスをローカル
  • に書き込む.
    writeObjメソッド注記readObjメソッドを追加
    運転後異常なしStudentクラスに属性を追加
    main関数の実行エラー新しいプロパティの前にtransientキーワードを追加
    main関数の実行エラーなし独自のUID をカスタマイズ
    main関数の実行エラーエラーに基づいて、エラーのuidを自分で定義したuid にコピーします.
    運転エラーなし