Java双括弧技巧回顾
初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时确实方便不少。原来做某些测试要初始化集合时会用到 commons-lang 包和 JDK 的 Arrays 工具类,现在知道可以这么用了:Map map =newHashMap() { {
put("Name","Unmi");
put("QQ","1125535");
}};
List stooges =newArrayList() { {
add("Larry");
add("Moe");
add("Curly");
}};
看起来都是在一条语句里完成,而不需要分步骤写成:Map map =newHashMap();
map.put("Name","Unmi");
map.put("QQ","1125535");
一不小心没好好理解的人可能以为它是什么特别的语法,关键是大括号连一块了,原作者也是在故作姿态,美其名曰:双括弧语法(double-brace syntax)。真是乱花渐欲迷人眼,其实就是匿名类加初始块。该文有解释:***层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block)ÿ