DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          導(dǎo)航

          <2006年11月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          隨筆分類(277)

          隨筆檔案(238)

          閱讀排行榜

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          好友之家

          最新評(píng)論

          JDK1.5中泛型的實(shí)現(xiàn)原理

          ??? 如果你還不知道泛型的使用請(qǐng)看這里
          ??? 在JDK1.5中加入了泛型,能幫助我們簡(jiǎn)化代碼,能解決不少問題,那JDK1.5中是如何實(shí)現(xiàn)的呢 ?
          JDK1.5中泛型的實(shí)現(xiàn)是擦拭法實(shí)現(xiàn)的,不同與c++中的泛型。說擦拭法可能有點(diǎn)難理解,所以從下邊的角度理解一下:
          我們寫一個(gè)程序
          ?1?package?com.jdk15;
          ?2?
          ?3?import?java.util.ArrayList;
          ?4?
          ?5?public?class?Generic?{
          ?6?????public?static?void?main(String[]?args){
          ?7?????????ArrayList<String>?list?=?new?ArrayList<String>();
          ?8?????????list.add("a");
          ?9?????????list.add("b");
          10?????????String?str?=?list.get(0);
          11?????}
          12?}
          編譯成.class的文件
          然后用Jad反編譯后的結(jié)果:
          ?1?//?Decompiled?by?Jad?v1.5.8g.?Copyright?2001?Pavel?Kouznetsov.
          ?2?//?Jad?home?page:?http://www.kpdus.com/jad.html
          ?3?//?Decompiler?options:?packimports(3)?
          ?4?//?Source?File?Name:???Generic.java
          ?5?
          ?6?package?com.jdk15;
          ?7?
          ?8?import?java.util.ArrayList;
          ?9?
          10?public?class?Generic
          11?{
          12?
          13?????public?Generic()
          14?????{
          15?????}
          16?
          17?????public?static?void?main(String?args[])
          18?????{
          19?????????ArrayList?list?=?new?ArrayList();
          20?????????list.add("a");
          21?????????list.add("b");
          22?????????String?str?=?(String)list.get(0);
          23?????}
          24?}
          25?
          看到這個(gè)是否明白了嗎 ?
          在JDK1.5中,只是在編譯期作了下手腳,就是在你編譯之前,自動(dòng)補(bǔ)充了轉(zhuǎn)型,然后編譯實(shí)現(xiàn)的。
          所以JDK1.5中的泛型只簡(jiǎn)化了代碼的編寫,并沒有提高性能的原因。因?yàn)檗D(zhuǎn)型并沒有去掉。

          posted on 2006-11-09 23:08 dreamstone 閱讀(3276) 評(píng)論(4)  編輯  收藏 所屬分類: jdk相關(guān)

          評(píng)論

          # re: JDK1.5中泛型的實(shí)現(xiàn)原理 2006-11-10 11:04

          jad目前還不支持jdk 1.5有語(yǔ)法!他是用低版本的的方法來處理的。  回復(fù)  更多評(píng)論   

          # re: JDK1.5中泛型的實(shí)現(xiàn)原理 2006-11-10 13:08 dreamstone

          謝謝你提出異議,不過從另一個(gè)角度(字節(jié)碼)來證明這個(gè)問題,結(jié)果是一樣的,
          證明過程在這里
          http://www.aygfsteel.com/dreamstone/archive/2006/11/10/80367.html  回復(fù)  更多評(píng)論   

          # re: JDK1.5中泛型的實(shí)現(xiàn)原理 2006-11-12 12:02 Flyingis

          看了你幾篇關(guān)于Java泛型的文章,簡(jiǎn)單透徹,學(xué)習(xí)不少。  回復(fù)  更多評(píng)論   

          # re: JDK1.5中泛型的實(shí)現(xiàn)原理 2007-02-03 23:51 小神

          不錯(cuò)  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 汾阳市| 杭锦后旗| 古蔺县| 武陟县| 长葛市| 泰安市| 章丘市| 榆树市| 清远市| 如东县| 高平市| 余庆县| 大悟县| 丰都县| 宝坻区| 文安县| 平江县| 工布江达县| 清水县| 台东市| 鄂尔多斯市| 柘荣县| 益阳市| 许昌市| 分宜县| 广丰县| 蓝山县| 嵊泗县| 蛟河市| 读书| 宾川县| 道孚县| 天镇县| 靖远县| 石屏县| 哈尔滨市| 石柱| 恩平市| 共和县| 梁平县| 盐池县|