快速业务通道

通过java套接字传递对象 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
打印出了这个类的版本唯一标识符。)

或者,您也可以使用如下命令启动图形界面下的serialver工具:

c:\> serialver -show

这个命令将弹出一个如图1所示的窗口,在这个窗口中写入您想检查的类的名字(包括路径)。图1显示的结果表示 Date类是可序列化的。

通过java套接字传递对象 - 编程入门网

图 1: Date是个可序列化的类

再说一次,不是所有的Java类都是可序列化的。举个例子,图2表明Socket类是不可序列化的。

通过java套接字传递对象 - 编程入门网

图2: Socket是个不可序列化的类

序列化用户自己的类

现在,让我们看看如何序列化用户自己写的类。在这个例子中,我们将建立一个用户类UserInfo,见例程3。为了让它可序列化,UserInfo类实现了Serializable接口。

例程 3: UserInfo.java

import java.io.*; import java.util.*; public class UserInfo implements Serializable {   String name = null;   public UserInfo(String name) {     this.name = name;   }   public void printInfo() {     System.out.println("The name is: "+name);   } }

通过java套接字传递对象(3)

时间:2010-12-19

下一步就是建立一个能创建UserInfo类实例的类,然后将对象写入输出流中,如例程4。本例中的输出流是一个名为"name.out"的文件。要注意的是,例程4 中的writeObject方法可以被调用任意多次,将任意多个对象写入输出流。

例程 4: SaveInfo.java

import java.io.*; import java.util.Date; public class SaveInfo {   public static void main(String argv[]) throws Exception {    FileOutputStream fos = new FileOutputStream("name.out");    ObjectOutputStream oos = new ObjectOutputStream(fos);    // create two objects    UserInfo user1 = new UserInfo("Java Duke");    UserInfo user2 = new UserInfo("Java Blue");    // write the objects to the output stream    oos.writeObject(user1);    oos.writeObject(user2);    oos.flush();    oos.close();    fos.close();   } }

最后,我们写一个将已经保存的对象读入的类,并且调用一个如例程5所示的方法。和writeObject 一样,readObject方法能被调用任意多次,从输入流中读入任意多个对象。

例程 5: ReadInfo.java

import java.io.*; import java.util.Date; public class ReadInfo {   public static void main(String argv[]) throws Exception {    FileInputStream fis = new FileInputStream("name.out");    ObjectInputStream ois = new ObjectInputStream(fis);    // read the objects from the input stream (the file name.out)    UserInfo user1 = (UserInfo) ois.readObject();    UserInfo user2 = (UserInfo) ois.readObject();    // invoke a method on the constructed object    user1.printInfo();    user2.printInfo();    ois.close();    fis.close();   } }

要测试这个例子,请编译如下源文件:UserInfo.java, SaveInfo.java, 和 ReadInfo.java。运行 SaveInfo,然后运行ReadInfo,将看到输出结果

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号