当前位置: 首页 > news >正文

成都市网站建设呼和浩特网站网站建设

成都市网站建设,呼和浩特网站网站建设,网站建设近五年出版的书籍,玩具网站建设规划书java序列化深克隆开发人员经常依靠3d方库来避免重新发明轮子#xff0c;尤其是在Java世界中#xff0c;Apache和Spring这样的项目如此盛行。 在处理这些框架时#xff0c;我们通常很少或根本无法控制其类的行为。 这有时会导致问题。 例如#xff0c;如果您想深克隆一个不提… java序列化深克隆 开发人员经常依靠3d方库来避免重新发明轮子尤其是在Java世界中Apache和Spring这样的项目如此盛行。 在处理这些框架时我们通常很少或根本无法控制其类的行为。 这有时会导致问题。 例如如果您想深克隆一个不提供合适克隆方法的对象除了编写大量代码之外您还有什么选择 通过序列化克隆 最简单的方法是通过利用对象可序列化进行克隆。 Apache Commons提供了一种执行此操作的方法但是为了完整起见下面也是您自己执行此操作的代码。 SuppressWarnings(unchecked) public static T cloneThroughSerialize(T t) throws Exception {ByteArrayOutputStream bos new ByteArrayOutputStream();serializeToOutputStream(t, bos);byte[] bytes bos.toByteArray();ObjectInputStream ois new ObjectInputStream(new ByteArrayInputStream(bytes));return (T)ois.readObject(); }private static void serializeToOutputStream(Serializable ser, OutputStream os)throws IOException {ObjectOutputStream oos null;try {oos new ObjectOutputStream(os);oos.writeObject(ser);oos.flush();} finally {oos.close();} }// using our custom method Object cloned cloneThroughSerialize (someObject);// or with Apache Commons cloned org.apache.commons.lang. SerializationUtils.clone(someObject); 但是如果我们要克隆的类不是可序列化的并且我们无法控制源代码或者无法将其设置为可序列化该怎么办 选项1 – Java深度克隆库 有一个不错的小程序库它可以深度克隆几乎所有Java对象- 克隆 。 它利用Java的出色反射功能来提供优化的对象的深克隆版本。 Cloner clonernew Cloner(); Object cloned cloner.deepClone(someObject); 如您所见它非常简单有效并且需要最少的代码。 除了这个简单的示例它还具有一些更高级的功能您可以在此处查看 。 选项2 – JSON克隆 如果我们无法将新库引入我们的代码库该怎么办 我们中有些人处理批准程序以引入新的库对于一个简单的用例可能不值得。 好吧只要我们有某种方式可以序列化和还原对象就可以进行深层复制。 JSON通常被使用因此它是一个很好的选择因为我们大多数人都使用一个或另一个JSON库。 Java中的大多数JSON库都可以有效地序列化任何POJO而无需任何配置或映射。 这意味着如果您具有JSON库并且不能或不会引入更多库来提供深度克隆则可以利用现有的JSON库来获得相同的效果。 请注意此方法将比其他方法慢但是对于绝大多数应用程序这不会引起任何性能问题。 以下是使用GSON库的示例。 SuppressWarnings(unchecked) public static T cloneThroughJson(T t) {Gson gson new Gson();String json gson.toJson(t);return (T) gson.fromJson(json, t.getClass()); } // ... Object cloned cloneThroughJson(someObject); 请注意仅当复制的对象具有默认的无参数构造函数时这才可能起作用。 对于GSON您可以使用实例创建者来解决此问题。 其他框架具有类似的概念因此如果遇到无法修改的类且没有默认构造函数的问题则可以使用该框架。 结论 我建议做的一件事是对于需要克隆的任何类都应该添加一些单元测试以确保一切正常。 这可以防止对类的更改例如升级库版本在您不知情的情况下破坏应用程序尤其是在您设置了持续集成环境的情况下。 我概述了几种在没有任何自定义代码的情况下克隆对象的方法。 如果您使用其他任何方法获得相同的结果请分享。 参考 Carfey Software Blog上的JCG合作伙伴 Craig Flichel从Java轻松深度克隆了Java中的可序列化和不可序列化的对象 。 相关文章 Java最佳实践–高性能序列化 使用Gson教程进行Android JSON解析 在您的GWT应用程序中添加JSON功能 Java 7功能概述 Java Code Geeks编写的Java示例和代码段–正式发布 翻译自: https://www.javacodegeeks.com/2011/12/cloning-of-serializable-and-non.htmljava序列化深克隆
http://www.zqtcl.cn/news/778999/

相关文章:

  • 网站开发地图板块浮动国际重大新闻事件10条
  • 成品网站app开发wordpress宽度调整
  • 小型网站建设需要多少钱网站发布内容是否过滤
  • 网站如何推广运营漳平网站编辑价格
  • 海洋优质的网站建设企业微信下载官方网站
  • 十大免费ae模板网站wordpress 远程设置
  • 青岛网站的优化云南抖音推广
  • 做中英文版的网站需要注意什么如何偷别人dedecms网站的模板
  • 免费微网站制作最近三天发生的重要新闻
  • 网站优化网络推广seo编程软件python
  • 建设部网站官网合同免费申请网站永久
  • 遵化建设局网站哈尔滨网站制作公司价格
  • 科技因子网站建设方案河南网站推广优化公司
  • 什么网站了解国家建设的行情如何建设自己的php网站
  • 大连市平台网站外包公司和劳务派遣
  • 广州建网站公司排名嵌入式软件开发工程师工作内容
  • 计算机软件网站建设免费asp网站源码
  • 网站建设介绍ppt镇江网站搜索引擎优化
  • 珠海自助建站软件泉州网站开发
  • ios个人开发者账号多少钱拼多多seo怎么优化
  • 五金网站建设信息产业部备案网站
  • 网站被百度惩罚放弃互联网平台宣传推广方案
  • 自己怎么做网站首页自动app优化
  • 图形设计网站泉州网站建设企业
  • 免费建各种网站有没有做网站的团队
  • 做网站做网站的公司电商网站怎么做
  • 福建专业网站建设公司《设计》韩国
  • 怎么区分网站是模板做的Wordpress福利资源模板
  • 文案类的网站最新域名网站
  • 网站seo优化效果智能营销系统开发