分析

可以用接口或者抽象类的方法,我的话会倾向于接口。
但是需要知道的是——
接口定义了一种规范;抽象类提供了一个模板。

泛型的话其实就是要我们定义带泛型的接口或者抽象类,实现的时候表明类型,针对一个特定的类型。

封装文件操作的类,自然需要单例,这是很自然的,所以需要做一下简单的实现。

实现

我们可以定义这样的一个接口,带泛型:

public interface IFileSerialization<T> {/*** 反序列化* @return*/T readObject();/*** 序列化* @param object*/void writeObject(T object);}

实现类举例一则:

import java.io.*;public class MedicineInfoMapper implements IFileSerialization<AllMedicinesMap> {private MedicineInfoMapper() {}private static MedicineInfoMapper mapper;/*** 获取单例* @return 单例*/public static MedicineInfoMapper getInstance() {if (mapper == null) {mapper = new MedicineInfoMapper();}return mapper;}/*** 反序列化从文件中读取PatientList的序列化对象*/@Overridepublic AllMedicinesMap readObject() {try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(ALL_MEDICINES_FILENAME))) {AllMedicinesMap medicinesMap = (AllMedicinesMap)ois.readObject();return medicinesMap;} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}return null;}/*** 序列化对象*/@Overridepublic void writeObject(AllMedicinesMap object) {try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(ALL_MEDICINES_FILENAME))) {oos.writeObject(object);} catch (IOException e) {e.printStackTrace();}}}

这样就完成了简单的单例模式(线程不安全的懒汉式),并将文件操作统一封装,带有泛型。

【Java】封装带有泛型的序列化文件工具类相关推荐

  1. Java读取.txt文件工具类

    相关工具类代码 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; i ...

  2. java io文件流序列化_Java——Properties集合,Object序列化流与反序列化流,打印流,commons-IO文件工具类...

    一.properties集合 集合对象Properties类,继承Hashtable,实现Map接口,可以和IO对象结合使用,实现数据的持久存储. 特点: Hashtable的子类,map集合中的方法 ...

  3. 一次代码重构之旅-快速读写xml文件工具类封装

    为了满足系统的灵活性,有些功能经常需要用到配置文件,一般是xml格式的居多.如何能快速读写配置文件呢? 以前都是用dom4j提供的api来读写xml文件,用dom4j读写配置文件总感觉像是在结构化的处 ...

  4. java常用文件工具类

    java常用工具类(一) 主要是Java操作文件及及IO流的一些常用库,是Apache对java的IO包的封装,这里面文件类工具有两个非常核心的类FilenameUtils跟FileUtils,IO流 ...

  5. Java常用工具类---IP工具类、File文件工具类

    package com.jarvis.base.util; import java.io.IOException; import java.io.InputStreamReader; import j ...

  6. java file ip_java常用工具类 IP、File文件工具类

    本文实例为大家分享了java常用工具类的具体实现代码,供大家参考,具体内容如下 IP工具类 package com.jarvis.base.util; import java.io.IOExcepti ...

  7. java filehelper_Java常用工具类---IP工具类、File文件工具类

    package com.jarvis.base.util; import java.io.IOException; import java.io.InputStreamReader; import j ...

  8. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  9. Java读带有BOM的UTF-8文件乱码原因及解决方法(转)

    转载:http://www.linuxidc.com/Linux/2012-12/76707.htm 最近在处理文件时发现了同样类型的文件使用的编码可能是不同的.所以想将文件的格式统一一下(因为UTF ...

最新文章

  1. SAP 零售商品主数据修改物料组的方法
  2. onMeasure模式
  3. 建立索引要考虑的因素
  4. LINQ to Entities 基于方法的查询语法
  5. 华为修改优先级命令_VOlTE指标设定(华为网管各种命令)
  6. js中直接对字符串转义-用于solr ulr 关键词转义
  7. boost::type_erasure::tuple相关的测试程序
  8. 【POJ - 1463】Strategic game (树上最小点覆盖,树形dp)
  9. linux+sasl认证失败,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  10. IDEA 安装插件Plugin 'Scala' is incompatible with this installation
  11. 杭电1495非常可乐
  12. 猛龙出击•东莞赛区新闻发布会隆重举行,粤港澳大湾区将迎来首场搏击盛宴...
  13. mybatis源码学习(二):SQL的执行过程
  14. 吴恩达采访人工智能大师实录
  15. P1125 [NOIP2008 提高组] 笨小猴 java
  16. go sum: verifying module: checksum mismatch
  17. android app开机启动画面,Android-如何设置APP开机启动(图文)
  18. 如何让excel表格排头一直都在_如何快速整理Excel表格?学会这一招整理表格无压力...
  19. 【听说】比付费软件更好的94个免费软件
  20. 物联网技能大赛-Ubuntu-(3)

热门文章

  1. Python - 装饰器
  2. 微信企业号-根据code获取成员信息(过期code)
  3. object类型转换为Array类型
  4. 从此走上一条iOS程序猿不归路。。。
  5. linux 查找文件或者服务
  6. 复制GAC中的DLL
  7. 如何关闭父窗体?C#
  8. 数据库查询字段为空时,返回0
  9. Rails Minitest style 指南
  10. flutter的按钮如何变为不可选中_如何在Flutter中禁用按钮?