再谈Java双括弧技巧:不规范的语法?Java认证考试

文章作者 100test 发表时间 2010:01:01 15:43:07
来源 100Test.Com百考试题网


  Java双括弧技巧回顾
  初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时确实方便不少。原来做某些测试要初始化集合时会用到 commons-lang 包和 JDK 的 Arrays 工具类,现在知道可以这么用了:
  Map map = new HashMap() {{
  put("Name", "Unmi").
  put("QQ", "1125535").
  }}.
  List stooges = new ArrayList() {{
  add("Larry").
  add("Moe").
  add("Curly").
  }}.
  看起来都是在一条语句里完成,而不需要分步骤写成:
  Map map = new HashMap().
  map.put("Name","Unmi").
  map.put("QQ","1125535").
  一不小心没好好理解的人可能以为它是什么特别的语法,关键是大括号连一块了,原作者也是在故作姿态,美其名曰:双括弧语法(double-brace syntax)。真是乱花渐欲迷人眼,其实就是匿名类加初始块。该文有解释:第一层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。
  那怎么去更好理解它呢?如果我们写成如下的方式应该会更好理解吧,提个技巧,在 Eclipse 中对第一段代码按下 Ctrl Shift F 就如下了:
  Map map = new HashMap() {
  {
  put("Name", "Unmi").
  put("QQ", "1125535").
  }
  }.
  其实就是匿名类啊,会创建出一个 HashMap 的子类来,匿名类中一个 {} 括起来的初始化块,里面自然可放置初始化代码。{} 块中的代码编译后会放到

相关文章


将Java程序注册成系统服务Java认证考试
任务列表分派给多个线程的策略和方法Java认证考试
Java趣味编程实例:Java画的手机Java认证考试
J2meGame学习四种寻路算法比较Java认证考试
再谈Java双括弧技巧:不规范的语法?Java认证考试
使用Java多线程实现任务分发Java认证考试
使用Java代码控制CPU占用率Java认证考试
Eclipse重构功能:扩展点的使用Java认证考试
选择学习“下一个”程序语言Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛