什么是序列化
我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。
Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。
怎么序列化一个对象?
要序列化一个对象,这个对象所在类就必须实现Java序列化的接口:java.io.Serializable。
1、类添加序列化接口
2、序列化/反序列化
可以借助commons-lang3工具包里面的类实现对象的序列化及反序列化,你没有必要自己写。
import org.apache.commons.lang3.SerializationUtils;
public class Test
{
public static void main(String[] args)
{
User user = new User();
user.setUsername("Java");
user.setAddress("China");
byte[] bytes = SerializationUtils.serialize(user);
User u =SerializationUtils.deserialize(bytes);
System.out.println(u);
}
}
上例通过序列化对象字节到内存然后反序列化,当然里面也提供了序列化磁盘然后再反序列化的方法,原理都是一样的,只是目标地不一样。
序列化注意事项
序列化对象必须实现序列化接口。
序列化对象里面的属性是对象的话也要实现序列化接口。
类的对象序列化后,类的序列化ID不能轻易修改,不然反序列化会失败。
类的对象序列化后,类的属性有增加或者删除不会影响序列化,只是值会丢失。
如果父类序列化了,子类会继承父类的序列化,子类无需添加序列化接口。
如果父类没有序列化,子类序列化了,子类中的属性能正常序列化,但父类的属性会丢失,不能序列化。
用Java序列化的二进制字节数据只能由Java反序列化,不能被其他语言反序列化。如果要进行前后端或者不同语言之间的交互一般需要将对象转变成Json/Xml通用格式的数据,再恢复原来的对象。
如果某个字段不想序列化,在该字段前加上transient关键字即可。
分享到:
相关推荐
Apache common io转码工具类入门教程
用于压缩/解压缩的java开发工具包,基本上主流格式全包含,其中apache-common-compress内有5个jar包,两个是test的不用管,剩余三个,一个是源码包,一个是开发包另一个是javadoc。解压除RAR外的所有格式。 apache-...
Apache Common Math 2.2 API CHM 英文文档。 注意:如果你下载后打开右侧页面出现该页无法显示情况,请在CHM件中右键-属性,在下面点击-解除锁定。之后再打开文档即可。
基于“Apache Shiro反序列化”漏洞谈网络安全问题防范.pdf
061-Apache Shiro 反序列化之殇.pdf
msgpack工具库支持二进制格式的序列化和反序列化,速度快,效率更好。
下面通过一个简单的样例来说明如何利用apache common pool来应用对象池。 假定我现在有一个任务,就是对一堆字符串进行格式化,为了加快速度,采用了多线程的方式允许,而格式化则是通过对象StringFormat来实现。 ...
apache common imaging,Apache的图形处理库
apache common_vsf.chm中文帮助文档
apache commonmail.jar 用来发邮件
apache可视化管理工具-ApacheConf
apache common pool2 实例 简单实用,集成spring,配置信息通过配置文件全程配置
Apache-Shiro反序列化1
apache commons api beanutils collections configuration lang logging
Apache Avro 1.8.2 序列化规范, Hadoop 新型序列化框架规范定义。
apache_common_validator.chm 中文帮助文档 apache下的validator中文帮助文档
NULL 博文链接:https://niuyantao.iteye.com/blog/1693850
apache common系列包的作用以及帮助文档,里面有apache common常用包的一些功能介绍以及common系列的帮助chm文档
Apache Common CLI 参数解析的源码包,对应的是Java语言,使用Apache License
Apache Common Log 设计方案,介绍apache-commons中主要类的详细设计方案