中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Java序列化和反序列化例子

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

序列化簡單說就是為了保存在內(nèi)存中的各種對(duì)象的狀態(tài)(也就是實(shí)例變量,不是方法),雖然你可以用你自己的各種各樣的方法來保 存object states,但是Java給你提供一種應(yīng)該比你自己好的保存對(duì)象狀態(tài)的機(jī)制,那就是序列化。

反序列化正好相反,就是將保存的對(duì)象讀出來,實(shí)例為對(duì)象。

下面是一個(gè)完整而形象的例子:

/** 
 * 對(duì)象序列化與反序列化 
 * 
 */  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.ObjectInputStream;  
import java.io.ObjectOutputStream;  
import java.io.Serializable;  

/* 需要持久化的類 
 * 要想使類支持對(duì)象序列化,只需要實(shí)現(xiàn)Serializable接口 
 */  
class Person implements Serializable {  

    private static final long serialVersionUID = 3456126674259028540L;  
    /* 屬性 */  
    private String id;  
    private String password;  
    private String name;  
    private int age;  
    // 如果不想對(duì)某些屬性進(jìn)行序列化,則需加上transient修飾符  
    private transient String sex;  

    /* setter和getter方法 */  
    public String getId() {  
        return id;  
    }  

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

    public String getPassword() {  
        return password;  
    }  

    public void setPassword(String password) {  
        this.password = password;  
    }  

    public String getName() {  
        return name;  
    }  

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

    public int getAge() {  
        return age;  
    }  

    public void setAge(int age) {  
        this.age = age;  
    }  

    public String getSex() {  
        return sex;  
    }  

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

    /* 覆蓋toString方法 */  
    public String toString() {  
        return "對(duì)象信息:" + id + " " + password + " " + name + " " + age + " "  
                + sex;  
    }  

}  

/* 
 * 實(shí)現(xiàn)了對(duì)象序列化和反序列化的類 
 */  
public class SeriObject {  

    /** 
     * 序列化 
     *  
     * @param person 
     *            對(duì)象名 
     * @param file 
     *            指定文件 
     */  
    public void writePerson(Person person, String file) {  
        try {  
            // 對(duì)象輸出流,指向指定文件  
            ObjectOutputStream out = new ObjectOutputStream(  
                    new FileOutputStream(file));  
            out.writeObject(person);// 將對(duì)象寫入文件  
            out.flush();// 清空  
            out.close();// 關(guān)閉  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  

    }  

    /** 
     * 反序列化 
     *  
     * @param file 
     *            指定文件 
     */  
    public void readPerson(String file) {  
        try {  
            // 對(duì)象輸入流,來源于指定文件  
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(  
                    file));  
            Object o = in.readObject();// 將對(duì)象從文件讀出  
            in.close();// 關(guān)閉  
            if (o != null) {  
                if (o instanceof Person)  
                    System.out.println(o.toString());  
            }  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (ClassNotFoundException e) {  
            e.printStackTrace();  
        }  
    }  

    public static void main(String[] args) {  
        /* 
         * 測(cè)試代碼 
         */  
        Person person = new Person();  
        person.setId("aaa");  
        person.setPassword("bbb");  
        person.setName("張三");  
        person.setAge(20);  
        person.setSex("男");  

        SeriObject so = new SeriObject();  
        so.writePerson(person, "person.txt");  
        so.readPerson("person.txt");  
    }  

}  

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:一個(gè)python寫的去c語言注釋的小腳本

下一篇:PHPMailer發(fā)送郵件