北京北大青鳥學(xué)校學(xué)術(shù)部講解:泛型的好處

      北京北大青鳥學(xué)校資深學(xué)術(shù)老師張老師介紹:Java 語言中引入泛型是一個較大的功能增強。不僅語言、類型系統(tǒng)和編譯器有了較大的變化,以支持泛型,而且類庫也進(jìn)行了大翻修,所以許多重要的類,比如集合框架,都已經(jīng)成為泛型化的了。這帶來了很多好處:(北大青鳥課程

      類型安全。北京北大青鳥學(xué)校張老師解釋,泛型的主要目標(biāo)是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設(shè)。沒有泛型,這些假設(shè)就只存在于程序員的頭腦中(或者如果幸運的話,還存在于代碼注釋中)。

      北京北大青鳥學(xué)校:Java 程序中的一種流行技術(shù)是定義這樣的集合,即它的元素或鍵是公共類型的,比如“String 列表”或者“String 到 String 的映射”。通過在變量聲明中捕獲這一附加的類型信息,泛型允許編譯器實施這些附加的類型約束。類型錯誤現(xiàn)在就可以在編譯時被捕獲了,而不是在運行時當(dāng)作 ClassCastException 展示出來。將類型檢查從運行時挪到編譯時有助于您更容易找到錯誤,并可提高程序的可靠性。(北大青鳥課程

      消除強制類型轉(zhuǎn)換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉(zhuǎn)換。這使得代碼更加可讀,并且減少了出錯機(jī)會。

      盡管減少強制類型轉(zhuǎn)換可以降低使用泛型類的代碼的羅嗦程度,但是聲明泛型變量會帶來相應(yīng)的羅嗦。比較下面兩個代碼例子。(北大青鳥課程

      該代碼不使用泛型:
      List li = new ArrayList();
      li.put(new Integer(3));
      Integer i = (Integer) li.get(0);

      該代碼使用泛型:
      List<Integer> li = new ArrayList<Integer>();
      li.put(new Integer(3));
      Integer i = li.get(0);

      在簡單的程序中使用一次泛型變量不會降低羅嗦程度。但是對于多次使用泛型變量的大型程序來說,則可以累積起來降低羅嗦程度。(北大青鳥課程

      潛在的性能收益。 泛型為較大的優(yōu)化帶來可能。在泛型的初始實現(xiàn)中,編譯器將強制類型轉(zhuǎn)換(沒有泛型的話,程序員會指定這些強制類型轉(zhuǎn)換)插入生成的字節(jié)碼中。但是更多類型信息可用于編譯器這一事實,為未來版本的 JVM 的優(yōu)化帶來可能。(北大青鳥課程)

      由于泛型的實現(xiàn)方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似于沒有泛型(和強制類型轉(zhuǎn)換)時所寫的代碼,只是更能確保類型安全而已。(北京北大青鳥學(xué)校提供,未完待續(xù))

      北大青鳥網(wǎng)上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 精品国产一区在线观看| 国产日韩AV免费无码一区二区| 亚洲中文字幕一区精品自拍| 国产精品美女一区二区| 一区二区三区电影网| 亚洲AV美女一区二区三区| 中文字幕av一区| 一区二区三区在线看| 亚洲午夜一区二区电影院| 无码精品人妻一区二区三区影院| 中文字幕在线一区| 色欲AV无码一区二区三区| 日本一区二三区好的精华液 | 中文字幕av一区| 91一区二区三区四区五区| 亚洲人成网站18禁止一区 | 成人区精品一区二区不卡| 天美传媒一区二区三区| 91亚洲一区二区在线观看不卡| 亚洲美女高清一区二区三区| 日本一区二区三区在线视频观看免费 | 一级特黄性色生活片一区二区| 亚洲AV无码片一区二区三区| 国产亚洲一区二区三区在线| 无码人妻精品一区二区三区99不卡| 国产一区二区草草影院| 成人精品一区久久久久| 国产一区二区三区免费在线观看| 无码毛片一区二区三区视频免费播放 | 午夜影视日本亚洲欧洲精品一区| 久久精品无码一区二区三区日韩| 琪琪see色原网一区二区| 无码毛片一区二区三区视频免费播放 | 国偷自产一区二区免费视频| 中文字幕乱码一区二区免费| 亚洲天堂一区二区三区| 在线免费一区二区| 亚洲日韩激情无码一区 | 伊人久久大香线蕉av一区| 久久久精品人妻一区二区三区四 | 成人精品一区二区三区校园激情|