隨筆-124  評論-49  文章-56  trackbacks-0

          Java 7已經(jīng)完成的7大新功能:
                1 對集合類的語言支持;
                2 自動資源管理;
                3 改進(jìn)的通用實(shí)例創(chuàng)建類型推斷;
                4 數(shù)字字面量下劃線支持;
                5 switch中使用string;
                6 二進(jìn)制字面量;
                7 簡化可變參數(shù)方法調(diào)用。

                下面我們來仔細(xì)看一下這7大新功能:
                1 對集合類的語言支持
                Java將包含對創(chuàng)建集合類的第一類語言支持。這意味著集合類的創(chuàng)建可以像Ruby和Perl那樣了。
                原本需要這樣:
                   List<String> list = new ArrayList<String>();
                   list.add("item");
                   String item = list.get(0);
            
                   Set<String> set = new HashSet<String>();
                   set.add("item");
                   Map<String, Integer> map = new HashMap<String, Integer>();
                   map.put("key", 1);
                   int value = map.get("key");

                現(xiàn)在你可以這樣:
                   List<String> list = ["item"];
                   String item = list[0];
                  
                   Set<String> set = {"item"};
                  
                   Map<String, Integer> map = {"key" : 1};
                   int value = map["key"];

                這些集合是不可變的。

            
                2 自動資源管理
                Java中某些資源是需要手動關(guān)閉的,如InputStream,Writes,Sockets,Sql classes等。這個新的語言特性允許try語句本身申請更多的資源,
             這些資源作用于try代碼塊,并自動關(guān)閉。
                這個:
                   BufferedReader br = new BufferedReader(new FileReader(path));
                   try {
                   return br.readLine();
                         } finally {
                             br.close();
                   }

                變成了這個:
                    try (BufferedReader br = new BufferedReader(new FileReader(path)) {
                       return br.readLine();
                    }
             
                你可以定義關(guān)閉多個資源:
                   try (
                       InputStream in = new FileInputStream(src);
                       OutputStream out = new FileOutputStream(dest))
                   {
                   // code
                   }
                為了支持這個行為,所有可關(guān)閉的類將被修改為可以實(shí)現(xiàn)一個Closable(可關(guān)閉的)接口。
            

                3 增強(qiáng)的對通用實(shí)例創(chuàng)建(diamond)的類型推斷
                類型推斷是一個特殊的煩惱,下面的代碼:
                   Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

                通過類型推斷后變成:
                   Map<String, List<String>> anagrams = new HashMap<>();
                這個<>被叫做diamond(鉆石)運(yùn)算符,這個運(yùn)算符從引用的聲明中推斷類型。

            
                4 數(shù)字字面量下劃線支持
                很長的數(shù)字可讀性不好,在Java 7中可以使用下劃線分隔長int以及l(fā)ong了,如:
                   int one_million = 1_000_000;
             運(yùn)算時先去除下劃線,如:1_1 * 10 = 110,120 – 1_0 = 110
            

                5 switch中使用string
                以前你在switch中只能使用number或enum。現(xiàn)在你可以使用string了:
                   String s = ...
                   switch(s) {
                   case "quux":
                        processQuux(s);
               // fall-through
                   case "foo":
             case "bar":
                        processFooOrBar(s);
               break;
                   case "baz":
                  processBaz(s);
                        // fall-through
             default:
                        processDefault(s);
                      break;
            }

            
                6 二進(jìn)制字面量
                由于繼承C語言,Java代碼在傳統(tǒng)上迫使程序員只能使用十進(jìn)制,八進(jìn)制或十六進(jìn)制來表示數(shù)(numbers)。
                由于很少的域是以bit導(dǎo)向的,這種限制可能導(dǎo)致錯誤。你現(xiàn)在可以使用0b前綴創(chuàng)建二進(jìn)制字面量:
                   int binary = 0b1001_1001;
             現(xiàn)在,你可以使用二進(jìn)制字面量這種表示方式,并且使用非常簡短的代碼,可將二進(jìn)制字符轉(zhuǎn)換為數(shù)據(jù)類型,如在byte或short。
             byte aByte = (byte)0b001;   
             short aShort = (short)0b010;   

            
                7 簡化的可變參數(shù)調(diào)用
                當(dāng)程序員試圖使用一個不可具體化的可變參數(shù)并調(diào)用一個*varargs* (可變)方法時,編輯器會生成一個“非安全操作”的警告。
             JDK 7將警告從call轉(zhuǎn)移到了方法聲明(methord declaration)的過程中。這樣API設(shè)計者就可以使用vararg,因?yàn)榫娴臄?shù)量大大減少了。

          posted on 2011-03-18 15:21 junly 閱讀(16859) 評論(9)  編輯  收藏 所屬分類: java

          評論:
          # re: Java 7七大新功能預(yù)覽 2011-03-19 11:42 | lhzq
          有了這七大功能,以后好用很多!  回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽 2011-03-21 09:31 | HiMagic!
          1&5是最需要的  回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽[未登錄] 2011-03-21 10:39 | pizzazz
          喜歡2  回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽 2011-03-21 14:07 | Drity Monkey
          5,7不錯  回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽 2011-04-07 17:44 | 王垠
          3 增強(qiáng)的對通用實(shí)例創(chuàng)建(diamond)的類型推斷

          這一條新功能比較搞笑。在我看來,該省略的類型應(yīng)該是在左邊,而不是右邊。我為Python實(shí)現(xiàn)了類型推斷系統(tǒng),經(jīng)驗(yàn)證明,唯一需要類型標(biāo)記的地方是函數(shù)的參數(shù)。
            回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽 2012-09-16 13:42 | 小豬
          List<String> list = ["item"];
          String item = list[0];

          Set<String> set = {"item"};

          Map<String, Integer> map = {"key" : 1};
          int value = map["key"];

          請問一下專家...以前都是輸入單筆資料..那麼多筆資料要如何做?  回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽 2014-04-02 20:52 | fa
          專家,Map<String, Integer> map = {"key" : 1}; 這個能編譯通過嗎?  回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽 2014-04-02 21:05 | fa
          “對集合類的語言支持” 那只是建議,并沒有加入到 java7 的版本里。  回復(fù)  更多評論
            
          # re: Java 7七大新功能預(yù)覽[未登錄] 2014-10-13 10:08 | xxx
          shit@fa
            回復(fù)  更多評論
            
          主站蜘蛛池模板: 萨迦县| 汝阳县| 夏津县| 万盛区| 宁武县| 东丽区| 武川县| 昭平县| 郑州市| 楚雄市| 房山区| 于都县| 大姚县| 成安县| 庄河市| 余姚市| 京山县| 施秉县| 江达县| 日土县| 武隆县| 镇雄县| 确山县| 石棉县| 东乡县| 江西省| 宜城市| 绥化市| 酒泉市| 宜阳县| 荃湾区| 谷城县| 牡丹江市| 昌江| 昌都县| 刚察县| 临安市| 涪陵区| 广汉市| 兴文县| 隆德县|