Java中对象的序列化与反序列化(下) - 技术分享 - 志盟培训
首页技术分享 Java中对象的序列化与反序列化(下)

Java中对象的序列化与反序列化(下)

更新时间:2017-05-16      作者:武老师       阅读:499

序列化是指把Java对象转换为字节序列的过程;反序列化是指把字节序列恢复为Java对象的过程。

如何实现对象的序列化与反序列化呢? 我们将从以下三个方面进行介绍。

(1)java类库中定义好的类的对象序列化与反序列化

(2)用户类的对象序列化与反序列化

(3)ArrayList、vector的序列化与反序列化

接上一节,这一节中,我们讲介绍用户类的对象序列化与反序列化与Arraylist、Vector的序列化与反序列化过程。

用户类的对象序列化与反序列化

用户自定义的类的对象要实现序列化,自定义类必须实现Serializable接口,Student类定义需如下:

public class Student implements Serializable

{

           private String name;

           private String password;

           privateint age;

           private String sex;

           private String hobbys;

           privateintprofessIndex;

           private String[] lessons;

           public Student(String na,Stringpass,inttmpage, String tmpSex,

                       String tmpH, int index, String []tmpLessons)

           {

                   name = na;

                   password = pass;

                   age = tmpage;

                   sex = tmpSex;


                   hobbys = tmpH;

                   professIndex = index;

                   //先申请数组空间

                   lessons = new String[tmpLessons.length];

                   for(inti=0;i<tmpLessons.length;i++)

                   {

                         lessons[i]=tmpLessons[i];

                   }

          }

}

public static void main(String[] args)

{

     String []lessons = new String[]{"计算机基础","aaa","bbb","ccc"};

     Student s1 =  new Student("Amliy", "123456", 23, "男", "唱歌", 1, lessons);

     //学生信息写入文件,序列化过程

     writeObject(s1);//该方法实现见(上)篇文章

     // 从文件中读出学生对象,反序列化过程

     Student s2 = (Student)readData();//该方法实现见(上)篇文章

}

同理如果要实现Fraction对象的序列化,则Fraction类的定义也需要实现Serializable接口,定义如下:

public class Fraction implements Serializable

{

       //属性

       intfenzi;

       intfenmu;

       //设值方法

       voidsetFenziAndMu(intzi,int mu)

       {

             fenzi = zi;

             fenmu = mu;

       }

}

//序列化过程

public static void main(String[] args)

{

     Fraction  f1 = new Fraction();

     f1.fenmu = 8;

     f1.fenzi = 5;

     writeObject(f1);   //序列化的过程

     Fraction f3=(Fraction)readData();//反序列化的过程

     f3.print();

     }

ArrayList、vector的序列化与反序列化

public static void main(String[] args)

{

     Fraction  f1 = new Fraction();

     f1.setFenziAndMu(5,8);

     Fraction  f2= new Fraction();

     f2.setFenziAndMu(5,6);

     Fraction  f3= new Fraction();

     f3.setFenziAndMu(2,3);

     ArrayList array = new ArrayList();    //讲Fraction对象放入ArrayList

     array.add(f1);

     array.add(f2);

     array.add(f3);


     writeObject(array);   //ArrayList的序列化过程

     Fraction fenshuArray=(ArrayList)readData();//ArrayList反序列化的过程

     for(Fraction tmp:fenshuArray)

     {

            tmp.print();

     }

}

在线报名

志盟科技上海招聘

在线报名 联系我们

志盟科技深圳招聘

在线报名 联系我们

志盟科技北京招聘

在线报名 联系我们
联系我们

咨询热线:

咨询 QQ:517578         

就业学员

  • 姓名:郭凡凡 
    院校:阜阳师范学院
    就职:佳戴
    职位:软件工程师
    月薪:10000

  • 姓名:陈祥龙 
    院校:中北大学
    就职:美囤妈妈
    职位:软件工程师
    月薪:9000

  • 姓名:陈建伟
    院校:南昌航空大学
    就职:SONY
    职位:嵌入式工程师
    月薪:8000

×
×
  • *真实姓名
  • *联系手机
  • *上课地址
  •    QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一报名服务。

×
  • *真实姓名
  • *联系手机
  • *联系邮箱
  • * QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一的服务。

本站由 宽敬科技——创新企业的建站运营顾问 提供支持