Java中的序列化及序列化ID

参考转载自:

  1. 秒懂Java序列化与反序列化
  2. Java的序列化ID的作用

1. 定义

Java的序列化:是指把Java对象转换为字节序列的过程

Java的反序列化:是指把字节序列恢复为Java对象的过程

2. 为什么需要

我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的。如何做到呢?这就需要Java序列化与反序列化了。换句话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网络上传送;另一方面,接收方需要从字节序列中恢复出Java对象

当我们明晰了为什么需要Java序列化和反序列化后,我们很自然地会想Java序列化的好处。其好处:

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 序列化机制是指将一个对象转换为字节流的过程,也可以将字节流转换为对象。这个过程可以用于数据的传输和存储,也可以用于对象的深度复制。 Java 序列化机制需要实现 java.io.Serializable 接口,这个接口没有任何方法,只是一个标记接口,用来标记一个类可以被序列化。一个类只有实现了 Serializable 接口,才能被序列化成字节流或者反序列化成对象。 Java 序列化的实现方式有两种:Java 序列化和 JSON 序列化。下面分别介绍这两种序列化方式。 #### Java 序列化 Java 序列化是将一个对象转换为字节流的过程,可以使用 ObjectOutputStream 来实现。下面是一个将对象序列化为字节流的示例: ```java public class MyClass implements Serializable { private int id; private String name; public MyClass(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } } public class Main { public static void main(String[] args) throws IOException { MyClass obj = new MyClass(1, "My Object"); // 将对象序列化为字节流 ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream objOut = new ObjectOutputStream(byteOut); objOut.writeObject(obj); byte[] bytes = byteOut.toByteArray(); // 打印字节流 System.out.println(Arrays.toString(bytes)); } } ``` 上面的例子,MyClass 类实现了 Serializable 接口,这样就可以将 MyClass 对象序列化为字节流了。在 Main 类,将 MyClass 对象序列化为字节流,然后打印字节数组。 #### JSON 序列化 JSON 序列化是将一个对象转换为 JSON 字符串的过程,可以使用 JSON 序列化库来实现。常用的 JSON 序列化库有 Jackson 和 Gson。下面是一个使用 Gson 序列化对象的示例: ```java public class MyClass { private int id; private String name; public MyClass(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } } public class Main { public static void main(String[] args) { MyClass obj = new MyClass(1, "My Object"); // 将对象序列化为 JSON 字符串 Gson gson = new Gson(); String json = gson.toJson(obj); // 打印 JSON 字符串 System.out.println(json); } } ``` 上面的例子,MyClass 类没有实现 Serializable 接口,因此不能使用 Java 序列化。在 Main 类,使用 Gson 序列化 MyClass 对象为 JSON 字符串,然后打印该字符串。 总的来说,Java 序列化机制非常灵活和强大,可以用于网络传输、数据存储、对象复制等多个场景,但是需要注意序列化和反序列化过程可能会出现的问题,如版本兼容性、安全性等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值