深入理解Java序列化与反序列化
作者:勤奋的小镇青年、 时间:2023-01-24 00:27:53
一、前言
序列化:将对象转换为二进制序列在网络中传输或保存到磁盘
反序列化:从网络或磁盘中将二进制序列转换为对象
注意:
对象必须实现Serializable接口
对象的所有属性都要能序列化(Integer,Byte等都进行了序列化)
1.1 String
1.2 Integer
二、案例
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);
}
}
三、运行结果
写入D盘的对象:
来源: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