软件测试开发技术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.ltesting.net