Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法
Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法
package com.example.core.mydemo.java; import com.example.core.mydemo.json2.GsonUtils;
import org.springframework.beans.BeanUtils; import java.io.*; /**
* Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法
* Serialization(序列化):将java对象以一连串的字节保存在磁盘文件中的过程,也可以说是保存java对象状态的过程。序列化可以将数据永久保存在磁盘上(通常保存在文件中)。
*
* deserialization(反序列化):将保存在磁盘文件中的java字节码重新转换成java对象称为反序列化。
*
* output
*Person object has been serialized.
* Deserialized Person's name is :{"firstName":"John","lastName":"Doe","sex":"男"}
* deserializedPerson=com.example.core.mydemo.java.Person@368102c8
* myPerson=John Doe
* myPerson 2={"firstName":"John","lastName":"Doe"}
*
*/
public class SerializationExample { public static void main(String[] args) throws IOException, ClassNotFoundException {
// 创建要被序列化的对象
Person person = new Person("John", "Doe");
person.setSex("男");
// 创建输出流
FileOutputStream fileOut = new FileOutputStream("person.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut); // 将对象写入输出流
out.writeObject(person); // 关闭输出流
out.close();
fileOut.close(); System.out.println("Person object has been serialized."); // 从输入流中读取并反序列化对象
FileInputStream fileIn = new FileInputStream("person.ser");
ObjectInputStream in = new ObjectInputStream(fileIn); // 从输入流中读取对象
Person deserializedPerson = (Person)in.readObject(); // 打印反序列化后的对象信息
System.out.println("Deserialized Person's name is :" + GsonUtils.toJson(deserializedPerson)); // 关闭输入流
in.close();
fileIn.close(); //序列化对象赋值
copy(deserializedPerson); } private static void copy(Serializable deserializedPerson) {
System.out.println("deserializedPerson=" + deserializedPerson); //根据属性值来赋值
MyPerson myPerson = new MyPerson();
// Person myPerson = new Person();
//根据属性值来赋值
BeanUtils.copyProperties(deserializedPerson,myPerson);
System.out.println("myPerson=" + myPerson.getName());
System.out.println("myPerson 2=" + GsonUtils.toJson(myPerson)); } } package com.example.core.mydemo.java; import java.io.Serializable; public class Person implements Serializable { private String firstName;
private String lastName;
//transient关键字表示有理的,被修饰的数据不能进行序列化
// private transient String sex;
private String sex; public Person(){
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public Person(String fname, String lname){
this.firstName = fname;
this.lastName = lname;
} public void setFirstName(String firstName) {
this.firstName = firstName;
} public void setLastName(String lastName) {
this.lastName = lastName;
} public String getFirstName(){
return firstName;
} public String getLastName(){
return lastName;
} public String getName(){
return firstName + " " + lastName;
}
} package com.example.core.mydemo.java; import java.io.Serializable; public class MyPerson implements Serializable {
private String firstName;
private String lastName; private String firstName2;
private String lastName2; public MyPerson(){ } public MyPerson(String fname, String lname){
this.firstName = fname;
this.lastName = lname;
} public void setFirstName(String firstName) {
this.firstName = firstName;
} public void setLastName(String lastName) {
this.lastName = lastName;
} public String getFirstName2() {
return firstName2;
} public void setFirstName2(String firstName2) {
this.firstName2 = firstName2;
} public String getLastName2() {
return lastName2;
} public void setLastName2(String lastName2) {
this.lastName2 = lastName2;
} public String getFirstName(){
return firstName;
} public String getLastName(){
return lastName;
} public String getName(){
return firstName + " " + lastName;
}
}
Java序列化和反序列化 Serializable BeanUtils.copyProperties赋值属性方法的更多相关文章
- Java序列化与反序列化(Serializable)
Java序列化与反序列化(Serializable) 特别注意: 1.要序列化的类必须实现Serializable借口 2.在反序列化(读取对象)的时候必须额外捕获EOFException 3.序列化 ...
- Java 序列化和反序列化(三)Serializable 源码分析 - 2
目录 Java 序列化和反序列化(三)Serializable 源码分析 - 2 1. ObjectStreamField 1.1 数据结构 1.2 构造函数 2. ObjectStreamClass ...
- Java 序列化和反序列化(二)Serializable 源码分析 - 1
目录 Java 序列化和反序列化(二)Serializable 源码分析 - 1 1. Java 序列化接口 2. ObjectOutputStream 源码分析 2.1 ObjectOutputSt ...
- Java 序列化和反序列化(一)Serializable 使用场景
目录 Java 序列化和反序列化(一)Serializable 使用场景 1. 最简单的使用:Serializable 接口 2. 序列化 ID 的问题 3. 静态字段不会序列化 4. 屏蔽字段:tr ...
- Serializable详解(1):代码验证Java序列化与反序列化
说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...
- Java基础18:Java序列化与反序列化
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- 夯实Java基础系列22:一文读懂Java序列化和反序列化
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- [转] Java序列化与反序列化
原文地址:http://blog.csdn.net/wangloveall/article/details/7992448 Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java ...
- Java基础(五)-Java序列化与反序列化
.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !i ...
随机推荐
- 链路分析 K.O “五大经典问题”
简介:链路分析是基于已存储的全量链路明细数据,自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求. 作者:涯海 链路追踪的 "第三种玩法" 提起链路追踪,大 ...
- IDA动态调试快捷键
1. F2下断点2. F7进入函数,F8单步调试,F9跳到下一个断点,F2下断点,G调到函数地址3. N重名4. g跳到地址和函数名5. u取消把函数汇编变成机器码6. c就是把机器码变成汇编7. F ...
- VSCode+VUE+ESLint以达到保存自动格式化
首先打开VSCode在.eslintrc.js中加入以下代码(不知道怎么找可以ctrl+shift+p进行搜索),添加 vscode 终端启动服务 // 添加⾃定义规则 'prettier/prett ...
- Canvas简历编辑器-我的剪贴板里究竟有什么数据
Canvas图形编辑器-我的剪贴板里究竟有什么数据 在这里我们先来聊聊我们究竟应该如何操作剪贴板,也就是我们在浏览器的复制粘贴事件,并且在此基础上聊聊我们在Canvas图形编辑器中应该如何控制焦点以及 ...
- golang基础之结构体
匿名结构体 在定义一些临时数据结构等场景下还可以使用匿名结构体. 在函数体内 package main import ( "fmt" ) func main() { //方法一 v ...
- 06. C语言指针
[指针] C语言使用数据名调用数据,数据名相当于C语言的直接寻址,直接寻址只能调用固定数据,而指针是间接寻址,指针存储了另一个数据的地址,使用指针调用数据时首先取指针存储的内存地址,之后使用此地址调用 ...
- SpringBoot-EasyExcel导出数据(带图片)
前言 EasyExcel 是阿里巴巴开源的一个Java操作Excel的技术,和EasyPoi一样是封装Poi的工具类. 但是不同的地方在于,在EasyExcel中解决了Poi技术读取大批量数据耗费内存 ...
- Linux部署Apache 网站服务器(httpd服务)
一.项目导入: 某学院组建了校园网,建设了学院网站.现需要架设Web服务器来为学院网站安家,同时在网站上传和更新时,需要用到文件上传和下载,因此还要架设FTP服务器,为学院内部和互联网用户提供WWW. ...
- GPS坐标、火星坐标、百度坐标之间的转换--提供javascript版本转换代码
1.国内几种常用坐标系说明 WG-S84: GPS仪器记录的经纬度信息,Google Earth采用,Google Map中国范围外使用,高德地图中国范围外使用.GCJ-02: 火星坐标系,中国国家测 ...
- HH的项链——题解
题目描述 直接求解会导致不同贝壳在上个区间算过但这个区间没标记的情况,所以在求解时要把上个区间的标记转移到这个区间 转移前先右边界由小到大排序,然后转移上个右边界到这个右边界的标记,同时记录上个标记出 ...