Java 序列化对象工具类
SerializationUtils.java
package javax.utils; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map; /**
* 序列化工具类
*
* @author Logan
* @version 1.0.0
*
*/
public class SerializationUtils { /**
* 序列化对象
*
* @param obj 对象
* @return 序列化后的字节数组
* @throws IOException
*/
public static byte[] serialize(Object obj) throws IOException {
if (null == obj) {
return null;
} try (
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteArrayOutputStream);
) { out.writeObject(obj);
return byteArrayOutputStream.toByteArray();
} } /**
* 反序列化
*
* @param bytes 对象序列化后的字节数组
* @return 反序列化后的对象
* @throws IOException
* @throws ClassNotFoundException
*/
public static Object deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
if (null == bytes) {
return null;
} try (
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
ObjectInputStream in = new ObjectInputStream(byteArrayInputStream);
) { return in.readObject();
}
} /**
* 反序列化成指定类型的对象
*
* @param bytes 对象序列化后的字节数组
* @param c 反序列化后的对象类型
* @return 指定类型的对象
* @throws IOException
* @throws ClassNotFoundException
*/
public static <T> T deserialize(byte[] bytes, Class<T> c) throws ClassNotFoundException, IOException {
return c.cast(deserialize(bytes));
} public static void main(String[] args) {
try {
Map<String, Object> map = new HashMap<>();
map.put("name", "Logan");
map.put("age", 26); byte[] bytes = serialize(map);
Map<?, ?> map2 = deserialize(bytes, Map.class);
System.out.println(map2); System.out.println(map.equals(map2));
System.out.println(map == map2);
} catch (Exception e) {
e.printStackTrace();
}
} }
.
Java 序列化对象工具类的更多相关文章
- 对象工具类 - ObjectUtils.java
对象工具类,提供对象克隆.获取对象属性.类型判断.Map转换对象.对象转Map.设置对象属性等. 源码如下:(点击下载 - ObjectUtils.java .JsonUtils.java .gso ...
- Java多线程并发工具类-信号量Semaphore对象讲解
Java多线程并发工具类-Semaphore对象讲解 通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownL ...
- java格式处理工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。
1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...
- JAVA 8 日期工具类
JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...
- JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)
系统类(java.lang.*)和工具类(java.util.*) 一.系统类(java.lang.*) 这个包下包含java语言的核心类,如String.Math.System和Thread类等,使 ...
随机推荐
- vue中this.$router.push() 传参
1 params 传参 注意⚠️:patams传参 ,路径不能使用path 只能使用name,不然获取不到传的数据 this.$router.push({name: 'dispatch', para ...
- python3 pip使用报错
在windodws上pip3使用了很长时间,今天突然报错. Fatal error in launcher: Unable to create process using '"' 解决方案 ...
- django DRF 图片路径问题
问题描述:为什么DRF中有时候返回的json中图片是带域名的,有时候是不带域名的呢?(难受啊马飞~) 解答:带域名的结果是在view中对模型类序列化的,DRF在序列化图片的时候 会检查上下文有没有re ...
- windows当代理服务器-CCProx的使用
参考 https://jingyan.baidu.com/article/0f5fb099ef3a2c6d8234ea75.html 在ubuntu下设置网络代理,选择手动方式
- U盘中毒问题解决
背景: 最近在学校的打印店里打印东西,结果过了一段时间再使用的时候发现,U盘中的文件夹都成了快捷方式,只有一个pdf文件是好的,无奈,其中有比较重要的东西,所以寻求解决办法,最终解决,为方便以后查阅, ...
- HDU 5407——CRB and Candies——————【逆元+是素数次方的数+公式】
CRB and Candies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- mysql常用的优化措施
http://www.cnblogs.com/ggjucheng/archive/2012/11/07/2758058.html
- WebView加载页面,带链接的Img在页面第一次加载时无法显示的问题
在做一个App的过程中,用到WebView来显示几个页面.在这个过程中发现有些页面的显示出现了异常:页面中的Img链接在页面第一次加载时无法正常显示图片,退出页面再次进入后可正常显示.开始以为是Web ...
- 5.1 Linux(8)
2019-5-1 21:37:20 嗓子前天回来上火,现在不疼了就是有点痒痒! 多喝热水 今天老师讲的如何发布项目,其实就是配置一下自己的uwsgi和 Nginx 配置一下 其他的不难 笔记很详细 ...
- easyui datagrid 动态加载数据 渲染问题,表格错位问题
$('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',width:100}, {fie ...