Java_Map_初始化及其他
Java_Map_初始化及其他
黑帽子 发表于4年前
Java_Map_初始化及其他
  • 发表于 4年前
  • 阅读 35
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

初看 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.   };    

共有 人打赏支持
粉丝 16
博文 52
码字总数 25680
×
黑帽子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: