很多时候我们都会看到实体类上会实现一个类 implements Serializable
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
public class User implements Serializable {
public static final long serialVersionUID=1L;
private String name="xgl";
private String password="admin";
private String sex="男";
private String age="18";
public User(String name, String password, String sex, String age){
this.name=name;
this.password=password;
this.age=age;
this.sex=sex;
}
}
其实 序列化 先从字面上理解
序:次序,顺序,程序,秩序
列:排成的行
序列化就是把xxx 按照统一的秩序来排列好处理
在java里的序列化是什么意思呢:(出自华为开发者联盟)
序列化的原本意图是希望对一个Java对象作一下“变换”,变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结束后对象就从内存里消失,另外变换成字节序列也更便于网络运输和传播,所以概念上很好理解:
- 序列化:把Java对象转换为字节序列。
- 反序列化:把字节序列恢复为原先的Java对象。
而且序列化机制从某种意义上来说也弥补了平台化的一些差异,毕竟转换后的字节流可以在其他平台上进行反序列化来恢复对象。
作者:华为云开发者联盟
链接:https://www.zhihu.com/question/26475281/answer/1898221893
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
实例如下:
第一步序列化:
public static void main(String[] args) throws IOException {
User user = new User();
System.out.println("Person Serial" + user);
FileOutputStream fos = new FileOutputStream("User.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(user);
oos.flush();
oos.close();
}
我们在根目录下打开生成的txt文本
结果如下
这就是将User对象通过序列化的方式处理的过程展示
第二步反序列化:
public static void main(String[] args) throws IOException, ClassNotFoundException {
/** User user = new User();
System.out.println("Person Serial" + user);
FileOutputStream fos = new FileOutputStream("User.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(user);
oos.flush();
oos.close();**/
FileInputStream fis = new FileInputStream("User.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
User user = (User) ois.readObject();
ois.close();
System.out.println("Person Deserial" + user);
}
运行结果debug
结果如下
这就是序列化和反序列的过程,码字不易,点个赞呗!