DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          JDK1.5中泛型的實現原理

          ??? 如果你還不知道泛型的使用請看這里
          ??? 在JDK1.5中加入了泛型,能幫助我們簡化代碼,能解決不少問題,那JDK1.5中是如何實現的呢 ?
          JDK1.5中泛型的實現是擦拭法實現的,不同與c++中的泛型。說擦拭法可能有點難理解,所以從下邊的角度理解一下:
          我們寫一個程序
          ?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反編譯后的結果:
          ?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?
          看到這個是否明白了嗎 ?
          在JDK1.5中,只是在編譯期作了下手腳,就是在你編譯之前,自動補充了轉型,然后編譯實現的。
          所以JDK1.5中的泛型只簡化了代碼的編寫,并沒有提高性能的原因。因為轉型并沒有去掉。

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

          評論

          # re: JDK1.5中泛型的實現原理 2006-11-10 11:04

          jad目前還不支持jdk 1.5有語法!他是用低版本的的方法來處理的。  回復  更多評論   

          # re: JDK1.5中泛型的實現原理 2006-11-10 13:08 dreamstone

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

          # re: JDK1.5中泛型的實現原理 2006-11-12 12:02 Flyingis

          看了你幾篇關于Java泛型的文章,簡單透徹,學習不少。  回復  更多評論   

          # re: JDK1.5中泛型的實現原理 2007-02-03 23:51 小神

          不錯  回復  更多評論   

          主站蜘蛛池模板: 顺平县| 濮阳县| 剑川县| 永兴县| 华池县| 昌宁县| 南郑县| 威海市| 汝州市| 中西区| 珲春市| 文昌市| 大洼县| 平度市| 胶南市| 新兴县| 关岭| 奈曼旗| 玉屏| 类乌齐县| 噶尔县| 田阳县| 济源市| 策勒县| 温泉县| 英德市| 彰化市| 北流市| 吉木乃县| 台中市| 乐昌市| 徐州市| 安塞县| 平顶山市| 若羌县| 克山县| 江陵县| 武山县| 方山县| 宝应县| 宣城市|