深入理解Java序列化与反序列化

作者:勤奋的小镇青年、 时间:2023-01-24 00:27:53 

一、前言

序列化:将对象转换为二进制序列在网络中传输或保存到磁盘

反序列化:从网络或磁盘中将二进制序列转换为对象

注意:

  • 对象必须实现Serializable接口

深入理解Java序列化与反序列化

  • 对象的所有属性都要能序列化(Integer,Byte等都进行了序列化)

1.1 String

深入理解Java序列化与反序列化

1.2 Integer

深入理解Java序列化与反序列化

二、案例

2.1 编写大象类


public class Elephant implements Serializable {
   private String name;
   private String age;
   private String sex;

public Elephant(String name, String age, String sex) {
       this.name = name;
       this.age = age;
       this.sex = sex;
   }

@Override
   public String toString() {
       return "Elephant{" +
               "name='" + name + '\'' +
               ", age='" + age + '\'' +
               ", sex='" + sex + '\'' +
               '}';
   }

public String getName() {
       return name;
   }

public void setName(String name) {
       this.name = name;
   }

public String getAge() {
       return age;
   }

public void setAge(String age) {
       this.age = age;
   }

public String getSex() {
       return sex;
   }

public void setSex(String sex) {
       this.sex = sex;
   }
}

2.2 大象测试类


public class ElephantTest {
   public static  final  String PATH = "D:\\elephant";
   static  void write(Elephant elephant){
       //创建对象输出流
       try( ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(PATH))) {
          //写入对象
           out.writeObject(elephant);
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

static Object read(){
       //创建对象输出流
       try( ObjectInputStream in = new ObjectInputStream(new FileInputStream(PATH))) {
           //写入对象
          return in.readObject();
       } catch (Exception e) {
           e.printStackTrace();
       }
       return null;
   }

public static void main(String[] args) {
       Elephant elephant7 = new Elephant("小红象", "18", "男");
       write(elephant7);
     Elephant elephant1 = (Elephant) read();
     System.out.println(elephant1);
       System.out.println(elephant7);
       System.out.println(elephant1==elephant7);
   }
}

三、运行结果

深入理解Java序列化与反序列化

写入D盘的对象:

深入理解Java序列化与反序列化

来源:https://blog.csdn.net/weixin_53106424/article/details/116765062

标签:Java,对象,序列化,反序列化
0
投稿

猜你喜欢

  • 继承JpaRepository后,找不到findOne()方法的解决

    2022-08-26 18:33:26
  • 详解Spring Aop实例之AspectJ注解配置

    2023-02-04 02:52:53
  • 利用Kotlin Tools如何快速添加Kotlin依赖详解

    2021-06-24 05:43:52
  • java 动态 代理的方法总结

    2023-08-25 04:00:33
  • Android使用WebView播放flash的方法

    2021-08-10 04:46:51
  • android module解耦组件化总体概述(推荐)

    2021-11-29 19:46:34
  • Android ActionBarActivity设置全屏无标题实现方法总结

    2023-09-09 10:44:57
  • JVM内存增强之逃逸分析

    2022-01-23 00:22:08
  • 19款Javascript富文本网页编辑器

    2021-12-08 23:48:45
  • springboot对接支付宝支付接口(详细开发步骤总结)

    2023-11-10 23:07:35
  • Java 中 hashCode() 与 equals() 的关系(面试)

    2023-08-29 18:03:57
  • springmvc 传递和接收数组参数的实例

    2022-12-16 04:03:06
  • java8到java15的新功能简介

    2023-07-28 02:18:18
  • 对Java中JSON解析器的一些见解

    2023-02-05 20:53:15
  • idea切换分支的时候,忽略一些无用的修改设置

    2022-01-10 04:13:37
  • Android利用传感器仿微信摇一摇功能

    2022-09-10 18:18:18
  • 详解Android Scroller与computeScroll的调用机制关系

    2023-09-27 19:49:14
  • Spring Cloud Gateway去掉url前缀

    2023-06-05 00:54:38
  • 用代码更新你的jar包

    2023-09-19 23:01:04
  • Java SpringBoot启动指定profile的8种方式详解

    2023-07-31 21:48:03
  • asp之家 软件编程 m.aspxhome.com