博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java List序列化的实现
阅读量:5883 次
发布时间:2019-06-19

本文共 2400 字,大约阅读时间需要 8 分钟。

hot3.png

概述 

java中的序列化与反序列化都要求对象实现Serializable接口(其实就是声明一下),而对于List这种动态改变的集合默认是不实现这个接口的,也就是不能直接序列化。但是数组是可以序列化的,所以我们只需要将List集合与数组进行转换就可以实现序列化与反序列化了。

序列化

Object对象

public class TestObject implements Serializable{    private String name;    private String address;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }}

实例化对象,加点数据,然后执行序列化

反序列化

public class Test {    public static void main(String[] args)     {        File file = new File("object.adt");        try (ObjectInputStream out = new ObjectInputStream(new FileInputStream(file)))        {            //执行反序列化读取            TestObject[] obj = (TestObject[]) out.readObject();            //将数组转换成List            List
listObject = Arrays.asList(obj); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } }}

封装

利用泛型把序列化和反序列化的方法封装起来,方便使用。

工具类

public class StreamUtils {    /**     * 序列化,List     */    public static 
boolean writeObject(List
list,File file) { T[] array = (T[]) list.toArray(); try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file))) { out.writeObject(array); out.flush(); return true; } catch (IOException e) { e.printStackTrace(); return false; } } /** * 反序列化,List */ public static
List
readObjectForList(File file) { E[] object; try(ObjectInputStream out = new ObjectInputStream(new FileInputStream(file))) { object = (E[]) out.readObject(); return Arrays.asList(object); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; }}

使用工具类

//序列化StreamUtils.
writeObject(list, new File("object.adt"));//反序列化List
re = StreamOfByte.
readObjectForList(new File("object.txt"));

转载于:https://my.oschina.net/u/3568600/blog/1796553

你可能感兴趣的文章
远程主机探测技术FAQ集 - 扫描篇
查看>>
C++中调用python函数
查看>>
Nomad添加acl认证
查看>>
“TI门外汉”网路知识笔记一 OSI参考模型
查看>>
你不需要jQuery(五)
查看>>
DatanodeDescriptor说明
查看>>
ServlertContext
查看>>
eclipse编辑器生命周期事件监听
查看>>
Python WOL/WakeOnLan/网络唤醒数据包发送工具
查看>>
sizeof(long)
查看>>
pxe网络启动和GHOST网克
查看>>
2.5-saltstack配置apache
查看>>
django数据库中的时间格式与页面渲染出来的时间格式不一致的处理
查看>>
Python学习笔记
查看>>
java String
查看>>
renhook的使用
查看>>
DOCKER windows 7 详细安装教程
查看>>
养眼美女绿色壁纸
查看>>
U盘启动盘制作工具箱 v1.0
查看>>
增强myEclipse的提示功能
查看>>