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 ...
随机推荐
- 阿里云原生应用安全防护实践与 OpenKruise 的新领域
简介: 得益于 Kubernetes 面向终态的理念,云原生架构天然具备高度自动化的能力.然而,面向终态的自动化是一把"双刃剑",它既为应用带来了声明式的部署能力,同时也潜在地会将 ...
- 浅谈分布式一致性:Raft 与 SOFAJRaft
简介: SOFAJRaft已开源 作者 | 家纯来源 | 阿里技术公众号 一 分布式共识算法 (Consensus Algorithm) 1 如何理解分布式共识? 多个参与者针对某一件事达成完全一致: ...
- WPF 由于系统颜色配置 Mscms 组件损坏启动失败
本文记录 WPF 应用程序,因为系统的颜色配置 Mscms.dll 组件损坏导致应用加载图片失败,从而启动失败的原因和解决方法 在 WPF 应用加载图片时,将会调用到系统的 Mscms.dll 组件. ...
- kafka connect gui 可视化管理工具
kafka connect gui 可视化管理工具 官网地址:http://www.redisant.cn/ka 连接到 Kafka Connect 支持各种认证方式,支持 SSL/TLS 安全连接 ...
- 数字电路中的等效电路和FPGA中的等效电路
欢迎各位朋友关注"郝旭帅电子设计团队",本微信公众号会定时更新相关技术类资料.软件等等,希望各位朋友都能在本微信公众号获得一些自己想要的"东西". 本篇内容主要 ...
- vue使用bus.js在兄弟组件传值
A组件往B组件传递数据data 1.src下创建文件eventBus.js,内容: import Vue from 'vue' export default new Vue() 2.在A,B组件分别引 ...
- Spire.Doc 生成长图
按模板生成内容,转换成长图保存: Document doc = new Document("A_BizRpt.docx"); ....... Image[] imgs = doc. ...
- 微信小程序开发入门(一),Nodejs搭建本地服务器
1. 如何模拟真实环境中,读取服务端数据,首先需要使用Nodejs搭建一个本地服务器的环境. 在搭建web服务器之前,需要先安装node.js(安装版本最好为6.9.x) 安装后node.js,接下 ...
- fastposter v2.8.0 发布 电商海报编辑器
fastposter v2.8.0 发布 电商海报编辑器 fastposter海报生成器,电商海报编辑器,电商海报设计器,fast快速生成海报 海报制作 海报开发.二维码海报,图片海报,分享海报,二维 ...
- mybatisplus 中查询的实体对应的表名是动态的解决方案
开发中遇到需要查询一些表里的数据,这些数据按照一定的规则存放在不同的数据库表里,例如表名是table_name+月份 table_name_2024_05,table_name_2024_04这样, ...