一般来说如果你进行远程调用的话(在j2ee中调用ejb是返回的数据容易都要进行“串行化”)

解决方案 »

  1.   

    通常是你需要将对象持久的保存,以便以后可以重建这个对象的时 如果你在设计一个基类,考虑到派生类可能需要序列化,那么基类应该实现Serializable接口不过在设计时需要慎重,因为实现了这个接口的类通常意味着在以后无法被修改或扩展
    包括任何的成员变量(public,protect,default,private).否则你的客户会因为序列化的版本冲突而崩溃。
      

  2.   

    “串行化”是用字节流的形式传递java对象,一般用在分布式对象的调用上,象rmi,ejb等不过“串行化”最吃内存了
      

  3.   

    节选一段讲义:
    Java 1.1增添了一种有趣的特性,名为“对象序列化”(Object Serialization)。它面向那些实现了Serializable接口的对象,可将它们转换成一系列字节,并可在以后完全恢复回原来的样子。这一过程亦可通过网 络进行。这意味着序列化机制能自动补偿操作系统间的差异。换句话说,可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一台Unix机器,然后在那 里准确无误地重新“装配”。 不必关心数据在不同机器上如何表示,也不必关心字节的顺序或者其他任何细节。就其本身来说,对象的序列化是非常有趣的,因为利用它可以实现“有限持久化”。请记住“持久 化”意味着对象的“生存时间”并不取决于程序是否正在执行――它存在或“生存”于程序的每一次调用之间。通过序列化一个对象,将其写入磁盘,以后在程序重新调用时重新恢复 那个对象,就能圆满实现一种“持久”效果。之所以称其为“有限”,是因为不能用某种“persistent”(持久)关键字简单地地定义一个对象,并让系统自动照看其他所 有细节问题(尽管将来可能成为现实)。相反,必须在自己的程序中明确地序列化和组装对象。
    ....................
    为序列化一个对象,首 先要创建某些OutputStream对象,然后将其封装到ObjectOutputStream对象内。此时,只需调用writeObject()即可完成对象的序列化 ,并将其发送给OutputStream。相反的过程是将一个InputStream封装到ObjectInputStream内,然后调用eadObject()。和往 常一样,我们最后获得的是指向一个上溯造型Object的句柄,所以必须下溯造型,以便能够直接设置。对象序列化特别“聪明”的一个地方是它不仅保存了对象的“全景图”, 而且能追踪对象内包含的所有句柄并保存那些对象;接着又能对每个对象内包含的句柄进行追踪;以此类推。我们有时将这种情况称为“对象网”,单个对象可与之建立连接。而且它 还包含了对象的句柄数组以及成员对象。若必须自行操纵一套对象序列化机制,那么在代码里追踪所有这些链接时可能会显得非常麻烦。在另一方面,由于Java对象的序列化似乎 找不出什么缺点,所以请尽量不要自己动手,让它用优化的算法自动维护整个对象网。