java序列化和java反序列化示例

时间:2023-11-24 04:01:03 

序列化一般应用与以下场景之中:

1.永久性保存对象,把对象通过序列化字节流保存到本地文件中;
2.通过序列化在网络中传输对象
3.通过序列化在进程间传递对象


import java.io.Serializable;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class javaSerializable_fun {

/**
   * java.io.Serializable 接口,类只有实现Serializable借口才能被序列化
   * java.io.Externalizable接口,利用java的序列化和反序列化工具,很多存储和恢复对象的工作都可以自动完成。
   * java.io.ObjectOutput接口,序列化传出, 继承了DataOutput接口并定义了一些方法,它支持对象序列化;
   *   重点说明:在该类中,writeObject()方法是最重要的方法,用于对象序列化,如果对象包含其他的对象引用,则writeObject()方法地柜序列化这些对象;
   * java.io.ObjectOutputStream类,负责向流中写入对象,构造方法:ObjectOutputStream(OutputStream out);
   * java.io.ObjectInput接口,序列化传入。继承了DataInput接口并定义了一些方法,它支持对象序列化;
   * ObjectInputStream类, 负责向从流中读取对象,构造方法:ObjectInputStream(InputStream out);
   ***/

public static void main(String[] args) {

    try
  {
   //构造FileOutputStream对象
   FileOutputStream f=new FileOutputStream("C:a.txt");

   //构造ObjectOutputStream对象
   ObjectOutputStream out=new ObjectOutputStream(f);

   Customer customer=new Customer("bj",50);

   //使用ObjectOutputStream对象的writeObject()方法进行序列化
   out.writeObject(customer);

   //关闭ObjectOutputStream对象
   out.close();

   //关闭FileOutputStream对象
     f.close();
     System.out.println("序列化完毕!");
  }
  catch(IOException e)
  {
   e.getStackTrace();
  }

}

}

class Customer implements Serializable
{
 private static final long serialVersionUID =1L;

 private String name;
 private int age;

 public String getName()
 {
  return name;
 }

 public int getAge()
 {
  return age;
 }

 public Customer(String name,int age)
 {
  this.name=name;
  this.age=age;
 }

 public String toString()
 {
  return "name="+ name +",age="+age;
 }
}

标签:java序列化,java反序列化
0
投稿

猜你喜欢

  • Android开发之实现GridView支付宝九宫格

    2023-01-26 15:26:16
  • Java SE之了解泛型

    2022-08-10 08:42:54
  • C#针对xml文件转化Dictionary的方法

    2021-09-12 12:33:48
  • C语言中队列的结构和函数接口的使用示例

    2022-01-08 06:56:40
  • java算法题解牛客BM99顺时针旋转矩阵示例

    2021-07-08 18:55:18
  • 浅谈java异常链与异常丢失

    2023-10-24 21:53:38
  • 解析C#中的装箱与拆箱的详解

    2023-03-15 23:52:36
  • Matlab实现获取文件夹下所有指定后缀的文件

    2021-06-17 23:57:49
  • Java给PDF加水印并合并多个文件

    2023-01-01 17:59:02
  • Java 抽象类特点总结

    2023-07-28 10:39:46
  • Java构造方法和方法重载详解

    2021-06-06 13:23:00
  • 因Spring AOP导致@Autowired依赖注入失败的解决方法

    2022-10-24 19:44:11
  • Android view自定义实现动态进度条

    2023-09-16 00:40:38
  • Android仿支付宝上芝麻信用分雷达图

    2023-04-21 18:44:30
  • Logback动态修改日志级别的方法

    2023-05-30 21:47:01
  • Kotlin select使用方法介绍

    2022-05-28 19:34:27
  • 详解Android应用中ListView列表选项栏的编写方法

    2023-09-03 15:01:25
  • 详解Android Activity之间切换传递数据的方法

    2021-10-28 04:55:53
  • Android实现Tab布局的4种方式(Fragment+TabPageIndicator+ViewPager)

    2023-02-26 10:45:41
  • 理解maven命令package、install、deploy的联系与区别

    2022-08-09 05:11:39
  • asp之家 软件编程 m.aspxhome.com