JAVA7的新特性之钻石操作符和加强的Switch语句

1. 钻石操作符(Diamond Operator < >)

在你的IDE中,如果你使用的泛型,那么就会给出很多的提示。举个例子来看一下吧,如果你定义了一个Map类型的变量trades,同时该变量使用到了泛型。那么该变量的声明如下,

Map> trades = new TreeMap> ();

通过查看上面的代码可以很直观的看到,一个不是很友好的问题就是每次声明泛型变量的时必须左右两边都同时声明泛型。这样看来相对来说右边的泛型声明就变得是多余的了。于是在使用Java7in7的时候你可以将上面的代码实现成如下的形式,

Map> trades = new TreeMap< > ();

这样看起来是不是很简洁呀?答案却是是这样的。你就不比每次两边都声明泛型。

这种只适用<>标记的操作,称之为钻石操作符Diamond Operator;

在此需要注意的一点是,在程序中及时你没有使用钻石操作符,这样也是符合语法的,但是这样一来编译器就会提示你类型安全的提示了。

2. Switch语句中使用字符串类型变量 

以前大家在使用Switch语句的时候,总是为不能使用String类型而烦恼。在Java7中于是引入了String类型的变量可以在Switch语句中使用了。

假如说我们有一个需求是按照交易的状态来进行处理,而且该状态是一个String类型的返回值。因此在实现的时候我们只能通过if-else 语句来实现该功能。

privatevoidprocessTrade(Trade t) {
            String status = t.getStatus();
             if(status.equalsIgnoreCase(NEW)) {
                  newTrade(t);
              }elseif(status.equalsIgnoreCase(EXECUTE)) {
                   executeTrade(t);            
             }elseif(status.equalsIgnoreCase(PENDING)) {              
                  pendingTrade(t);
             }
 }

但是在Java7中我们就可以使用加强的Switch语句来处理String类型的分支了。


publicvoidprocessTrade(Trade t) {
           String status = t.getStatus();
            switch(status) {  
               caseNEW: 
               newTrade(t);
                   break;
                   caseEXECUTE:
                  executeTrade(t);
               break;
               casePENDING:
               pendingTrade(t);
                   break;
                   default:
               break;
                  }
     }

以上的实现主要是通过String.equals() 方法来实现比较是否Status值和case语句中的分支相同。

你可能感兴趣的:(Java)