文档章节

Java_Map_初始化及其他

黑帽子
 黑帽子
发布于 2013/10/23 23:18
字数 380
阅读 55
收藏 0

初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时确实方便不少。原来做某些测试要初始化集合时会用到 commons-lang 包和 JDK 的 Arrays 工具类,现在知道可以这么用了:


 

01.   Map map =newHashMap() {{    

02.           put("Name","Unmi");    

03.           put("QQ","1125535");    

04.   }};    

05.        

06.   List stooges =newArrayList() {{    

07.           add("Larry");    

08.           add("Moe");    

09.           add("Curly");    

10.   }};    

 
看起来都是在一条语句里完成,而不需要分步骤写成:


 

1.   Map map =newHashMap();    

2.   map.put("Name","Unmi");    

3.   map.put("QQ","1125535");    



一 不小心没好好理解的人可能以为它是什么特别的语法,关键是大括号连一块了,原作者也是在故作姿态,美其名曰:双括弧语法(double-brace syntax)。真是乱花渐欲迷人眼,其实就是匿名类加初始块。该文有解释:第一层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。

那怎么去更好理解它呢?如果我们写成如下的方式应该会更好理解吧,提个技巧,在 Eclipse 中对第一段代码按下 Ctrl + Shift + F 就如下了:


 

1.   Map map =newHashMap() {    

2.       {    

3.           put("Name","Unmi");    

4.           put("QQ","1125535");    

5.       }    

6.   };    

© 著作权归作者所有

共有 人打赏支持
黑帽子
粉丝 17
博文 53
码字总数 25680
作品 0
珠海
高级程序员
私信 提问
如何优雅的写好Java Code

Map 初始化 一般程序员初始化Map 二般程序员初始化Map 懒惰的程序员

呼呼南风
11/11
0
0
探究ThreadLocal原理(基于Java8)

线程封闭 避免并发最简单的方法就是线程封闭。 即把对象封装到一个线程里,只有这一个线程能看到此对象。那么这个对象就算不是线程安全的也不会出现任何安全问题。 使用ThreadLocal是实现线程...

芥末无疆
02/10
0
0
java 之ThreadLocal

通过 ThreadLocal 能数据保存在一个线程中,而且不需要 lock 同步。理论上 ThreadLocal 可 以让一个变量在每个线程都有一个副本。 ThreadLocal 常用来屏蔽线程的私有变量,例如“并 发事务”或...

Beaver_
2015/04/04
0
0
Java 线程本地 ThreadLocal 的分析和总结

ThreadLocal类在Spring,Hibernate等框架中起到了很大的作用,对于其工作原理,很多网上的文章分析的不够彻底,甚至有些误解。 首先,为了解释ThreadLocal类的工作原理,必须同时介绍与其工作...

绿悠悠
2010/10/07
2.1K
0
ThreadLocal的原理与使用

通过源码解读ThreadLocal类的实现 ThreadLocal类提供了以下几个方法 get()方法是用来获取ThreadLocal在当前线程中保存的变量副本 set()用来设置当前线程中变量的副本 remove()用来移除当前线...

凌晨一点
08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文 :分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
107
4
Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
13
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
21
0

中国龙-扬科
昨天
4
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部