JDK7语法新特性

根据JSR 334,JDK 7添加了数个语法方面的新特性,它们是:

1. switch可以消化String了。
比如:
    public static void switchString(String s){
        switch (s){
        case "db": ...
        case "wls": ...
        case "idm": ...
        case "soa": ...
        case "fa": ...
        default: ...
        }
    }

2. 新的整数字面表达方式 - "0b"前缀和"_"连数符,提升程序员的幸福感。
 a. 表示二进制字面值的前缀, 0b:
 比如以下三个变量的值相同:
        byte b1 = 0b00100001;     // New
        byte b2 = 0x21;        // Old
        byte b3 = 33;        // Old

 b. 用下划线连接整数提升其可读性,自身无含义,不可用在数字的起始和末尾:
    long phone_nbr = 021_1111_2222;

3. 简化了泛型对象创建的语法 - "菱形 new",以下两个语句等价:
        ArrayList<String> al1 = new ArrayList<String>();    // Old
        ArrayList<String> al2 = new ArrayList<>();        // New

4. 为所有的reflect操作异常找了个新爸爸 - ReflectOperationException,孩儿们是:
    ClassNotFoundException,
    IllegalAccessException,
    InstantiationException,
    InvocationTargetException,
    NoSuchFieldException,
    NoSuchMethodException

5. catch有了多重捕获功能,也玩起了包养的勾当,以下代码心领神会:
    try{
        // code
    }
    catch (SQLException | IOException ex) {
        // ...
    }

6. 异常精确重抛 - 重抛时自动造型为子类,有点半主动制导武器的style:
    public void test() throws NoSuchMethodException, NoSuchFieldException{    // 子类
        try{
            // code
        }
        catch (RelectiveOperationException ex){    // 父类
            throws ex;
        }
    }

7. 发明了try()结构 - Try with Resources,能够自动接住异常并关闭资源(所谓的资源需要利用新的java.lang.AutoCloseable接口),注意以下代码中try后面跟的是"("不是"{":
    try(BufferedReader br = new BufferedReader(new FileReader("/home/oracle/temp.txt"))){
        ... br.readLine() ...
    }
try-with-resources语句可以带catch,也可以向上例一样一个catch也没有。

包光磊
Todd






评论:

发表一条评论:
  • HTML语法: 禁用
About

Principal Instructor

甲骨文首席培训师

来论坛找我

SHOUG

Search

Categories
Archives
« 四月 2014
星期日星期一星期二星期三星期四星期五星期六
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
今天