JavaBean组件和Serialization

      JavaBean涉及的两个重要类

      JavaBean对象和所有的对象一样,就其本质来说是动态变化的,若想使JavaBean对象在网络移动或把对象保存到永久介质中,必须把对象序列化 (Serialization)。对象序列化把对象的特征值按一定的顺序线性化排列。人们经常看到“持久性”一词与“序列化“联系在一起,持久性 (Persistence)是指使对象在硬盘上永久保存,对象的持久性是通过对象序列化来实现。反之。由序列化的对象的特征值重新构造该对象叫反序列化。 一个对象从一个网络结点传送到另一个结点,对象在发送的结点上需序列化,在接收对象的结点上需反序列化。

      1. Serializable接口

      Java提供了支持对象序列化的类和接口在java.io包中,Serializable接口是访问和运行持久性对象的最快的方式,若一个类对象要成为序 列化性对象,该对象类只需实现Serializable接口,就可以了。Serializable接口标识着一个对象是可序列化。在大多数情况下,要使一 个类对象序列化,只需要简单的在类声明中加入“implements Serializable”就可以了。例如
        public class abc implements Serializable
         {//……}

     每一个JavaBean都应该是可序列化的,这就意味着,在大多数情况下需实现 Serializable接口。下图3-5说明了如何保存对象的标识和其特征值信息。保存的对象是例3-1的JavaBeanExaml类的对象 javaBeanExam1。

 

      2. ObjectInputStream和ObjectOutputStream类
      java.io包中提供了几个类,它们实现了对象输入输出接口,如ObjectInputStream和ObjectOutputStream类,下面 我们举例说

明这两个类如何对持久性对象进行操作的。
      例3-7 利用ObjectOutputStream将例4-1中定义的的JavaBeanExaml类的对象写入到文件去。

      package bean;
      import java.io.*;
      import java.beans.Beans;
      public class BeanOut {
        public Beanout() {
        }
        public static void main(String arg[])
       {
          try {
                   FileOutputStream fos = new FileOutputStream("bean.ser");
                   ObjectOutputStream oos = new ObjectOutputStream(fos);
                   JavaBeanExaml javaBean1=new JavaBeanExaml();
                   javaBean1.setIAtrib (5);
                   oos.writeObject(javaBean1);
               }catch (Exception e) {
                     System.out.println(e.getMessage());
               }
       }
    }

 

   例3-8 将例3-7写入的对象读出来。这是序列化的逆过程。

   package bean;
   import java.io.*;
   import java.beans.Beans;
   public class beanin {
     public beanin() {
     }
   public static void main(String arg[])
   {
      try {
        FileInputStream fis = new FileInputStream("bean.ser");
        ObjectInputStream ois = new ObjectInputStream(fis);
        JavaBeanExaml javaBean1=(JavaBeanExaml)ois.readObject();
        System.out.println(javaBean1.getIAtrib ());
      }catch (Exception e){
          System.out.println(e.getMessage());
      }
     }
   }

最后程序运行,输出的结果是 5 ,这说明读入的对象所保存的特征值,的确在保存前设置的整数值 5。
    java的序列化机制为把对象输入输出带来方便。在上面的例子中,JavaBeanExaml对象不必知道如何将自己写入一个文件中,只需要简单的实现 Serializable接口,Java就会将所有的JavaBeanExaml bean的对象特征记录下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值