不负相思意

每当有人使用双支撑初始化时,小猫就会被杀死。除了语法非常不寻常而且不太地道(当然,品味是有争议的)之外,您还不必要地在应用程序中创建了两个重要的问题,我最近在博客上更详细地描述了.1.你创建的匿名类太多了每次使用双大括号初始化时,都会生成一个新类。例如:这个例子:Map source = new HashMap(){{

put("firstName", "John");

put("lastName", "Smith");

put("organizations", new HashMap(){{

put("0", new HashMap(){{

put("id", "1234");

}});

put("abc", new HashMap(){{

put("id", "5678");

}});

}});}};..将产生以下课程:Test$1$1$1.classTest$1$1$2.classTest$1$1.classTest$1.classTest.class对于您的类加载程序来说,这是相当大的开销-没有!当然,如果你只做一次的话,初始化时间不会很长。但是如果你在整个企业应用程序中这样做了20,000次.所有的堆内存只是为了一点“语法糖”?2.你可能会造成内存泄漏!如果您获取上述代码并从方法中返回该映射,则该方法的调用方可能会对无法被垃圾收集的非常庞大的资源进行管理。考虑以下示例:public class ReallyHeavyObject {

// Just to illustrate...

private int[] tonsOfValues;

private Resource[] tonsOfResources;

// This method almost does nothing

public Map quickHarmlessMethod() {

Map source = new HashMap(){{

put("firstName", "John");

put("lastName", "Smith");

put("organizations", new HashMap(){{

put("0", new HashMap(){{

put("id", "1234");

}});

put("abc", new HashMap(){{

put("id", "5678");

}});

}});

}};

return source;

}}回归Map的实例的引用。ReallyHeavyObject..你可能不想冒这个险:图片来自http:/blog.jooq.org/2014/12/08/不聪明-双花括号-反模式/3.你可以假装Java有地图文字为了回答您的实际问题,人们一直在使用这种语法来假装Java有类似于映射文本的东西,类似于现有的数组文本:String[] array = { "John", "Doe" };Map map = new HashMap() {{ put("John", "Doe"); }};有些人可能会觉得这在句法上很刺激。

Java双大括号_什么是Java中的双BRACE初始化?相关推荐

  1. java字符串 大括号_string.format格式化字符串中转义大括号“{}”

    今天,用Java读取配置文件占位符,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表 ...

  2. java console 交互_实例讲解java中Console类的用法

    java的Console类的使用方法及实例 java的Console类的使用方法及实例 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Win ...

  3. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  4. java实现递归算法_如何在Java中实现二进制搜索算法而无需递归

    java实现递归算法 by javinpaul 由javinpaul 流行的二进制搜索算法的迭代实现,用于在排序数组中查找元素. (An Iterative implementation of the ...

  5. java 添加注解_你知道Java中的package-info的作用吗?

    package-info.java对于日常业务开发的开发者来说,可能有点陌生,如果我们再项目中创建一个package-info.java,你会发现该类只有一个packge,如下 我们无法在该java文 ...

  6. java 解决死锁_如何解决java中的死锁问题

    一.死锁的定义 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去. 那么我们换一个更加规范的定义:集合中的每一个进程都在 ...

  7. java插入图片_如何在java窗体程序中添加图片

    打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下创建一个文件夹imgs,里面放了一张60*60的图片,创建后的工程目录和图片, ...

  8. java安卓计时器_如何在android中设置计时器

    通过java.util.Timer和java.util.TimerTask使用计时器的标准Java方法在Android中运行良好,但是你应该知道这个方法创建了一个新线程. 您可以考虑使用非常方便的Ha ...

  9. java cpu监控_如何在Java中监视计算机的CPU,内存和磁盘使用情况?

    问题 我想用Java监视以下系统信息: 当前CPU使用率**(百分比) 可用内存*(免费/总计) 可用磁盘空间(空闲/总计)*请注意,我的意思是整个系统可用的总内存,而不仅仅是JVM. 我正在寻找一种 ...

最新文章

  1. 可以控制到多低(功率)?
  2. labview波形图两个游标,LabVIEW数据可视化:使用波形图表控件逐点显示曲线的方法...
  3. Java的知识点26——File_API
  4. 现代密码学3.4--CPA安全,多次加密
  5. ftp 工具_ftp工具,ftp工具有哪些
  6. Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记...
  7. c语言中实现自动平移,c语言实现图像的旋转与平移
  8. Qt工作笔记-QGraphicsProxyWidget放自定义界面实现拖动
  9. B站、字节跳动等上榜2021福布斯中国最佳雇主榜;中兴发布“5G 智能T恤”:可监测呼吸;Linux 5.13 发布|极客头条...
  10. python 判断文件夹是否存在 否则创建_10行Python代码自动清理电脑内重复文件,解放双手!...
  11. 不必仰望他人,用自己的方式活着就好
  12. 计算机无法创建新文件夹,无法创建文件,小编教你无法新建文件夹怎么办
  13. 超简单制作栅格数据土地利用转移矩阵(Arcgis和Python实现)
  14. MATLAB常用求导和求偏导函数
  15. Linux服务器(CentOS7)基础信息设置之满足等保三级测评要求
  16. 浅谈IPv4/IPv6转换技术
  17. 基于CAA的CATIA二次开发环境搭建全过程(亲测可用)
  18. Parrot OS 4.6渗透测试系统安装与基础环境搭建
  19. 新发的日常小实验——Unity UGUI Image图片镜像对称效果(轴对称)
  20. 一些学校的ACM网址

热门文章

  1. 客户端连接XENAPP 6.5 提示 该地址未配置xenapp服务器
  2. php网站漏洞检测对sql注入漏洞防护
  3. 修改Docker0网桥默认网段
  4. 悠中选优,畅享马尔代夫与塞舌尔之旅
  5. 《Haskell趣学指南》—— 第2章,第2.3节类型变量
  6. 公司--下载svg图片
  7. 20150827-Y1506401-19+benz2015+正则表达式
  8. WebPart(汇总)[转载]
  9. java servlet例子_Servlet学习教程(三)---- 一个简单的Servlet例子
  10. java的注释规范_Java 注释规范