軟件測試開發技術java對象序列化[3]

發表于:2009-11-18來源:作者:點擊數: 標簽:軟件測試javaJAVAJava序列
軟件測試 開發 技術 java 對象序列化[3] 軟件測試工具 關鍵字:oo 關于如何使用定制序列化的部分代碼如下: //重寫writeObject()方法以便處理transient的成員。 public void writeObject(ObjectOutputStream outputStream) throws IOException{ outputStream

軟件測試開發技術java對象序列化[3]  軟件測試工具

關鍵字:oo 關于如何使用定制序列化的部分代碼如下:

    //重寫writeObject()方法以便處理transient的成員。

    public void writeObject(ObjectOutputStream outputStream) throws IOException{
    outputStream.defaultWriteObject();//使定制的writeObject()方法可以
    利用自動序列化中內置的邏輯。

    outputStream.writeObject(oSocket.getInetAddress());
    outputStream.writeInt(oSocket.getPort());
    }

    //重寫readObject()方法以便接收transient的成員。

    private void readObject(ObjectInputStream inputStream) throws IOException,ClassNotFoundException{
    inputStream.defaultReadObject();//defaultReadObject()補充自動序列化
    InetAddress oAddress=(InetAddress)inputStream.readObject();
    int iPort =inputStream.readInt();
    oSocket = new Socket(oAddress,iPort);
    iID=getID();
    dtToday =new Date();
    }

    完全定制序列化過程:

    如果一個類要完全負責自己的序列化,則實現Externalizable接口而不是Serializable接口。Externalizable接口定義包括兩個方法writeExternal()與readExternal()。利用這些方法可以控制對象數據成員如何寫入字節流.類實現Externalizable時,頭寫入對象流中,然后類完全負責序列化和恢復數據成員,除了頭以外,根本沒有自動序列化。這里要注意了。聲明類實現Externalizable接口會有重大的安全風險。writeExternal()與readExternal()方法聲明為public,惡意類可以用這些方法讀取和寫入對象數據。如果對象包含敏感信息,則要格外小心。這包括使用安全套接或加密整個字節流。到此為至,我們學習了序列化的基礎部分知識。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97