labile 发表于 2013-1-27 06:26:35

Java 中少为人知的小点子

          
[*]      废话   

或许你已经听过goto语句之争,也知道在Java中goto仍然是一个保留的keyword,但不允许使用。先来看看goto的经典使用方法:
                                           1:statement1;   2:statement_label_for_section2:   3:statement2;   4:goto statement_label_for_section2;            

                     

可以看出 2:statement_label_for_section2: 为一代码片段(Section)的开始标记。


Java语言中不允许使用goto,但可以使用像 2:statement_label_for_section2: 一样的代码片段标记作为 break/continue的跳转目标。


相关标准文件请参见:<<Java Language Spec. >>14.7 Labeled Statements


          
[*]      应用   

嵌套循环中,我有时会需要从内循环中直接跳到外循环。用Labeled Statements就可以方便实现。
                                           1:                for(int I1 = 0; I1 < 10; I1++) {   2:                        loop1:   3:                        for(int I2 = 0; I2 < 20; I1++) {   4:                              break loop1;   5:                        }   6:                }                                     continue的用法与break的用法是一样的。



Java语言中还有很多没有广泛应用的小点子。请参见:<<Java Language Spec. >>


          
[*]      Blocks   

<<Java Language Spec. >>14.2 Blocks
或许你跟我一样都是个懒鬼。特别在Test Case 代码当中,我经常需要在同一Method中定义一大堆的对象,这些对象的操作大者是大同小异的,你应该知道我在想什么了:Copy&Past。而为每个对象都起一个不同的名字是件痛苦的事。同时这些对象往往只是短命鬼。


                                           1:import java.util.ArrayList;   2:import java.util.Collection;   3:   4:public class T2 {   5:   6:      public static void main(String[] args) {   7:                {   8:                        Collection c = new ArrayList();   9:                        c.add( "1" );10:                        c.clear();11:                }12:                {13:                        Collection c = new ArrayList();14:                        c.add( "2" );15:                        c.clear();16:                }17:      }18:19:}                     



 
页: [1]
查看完整版本: Java 中少为人知的小点子