jdk1.5中泛型的实现原理 -凯发k8网页登录

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

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 阅读(3220) 评论(4)  编辑  收藏 所属分类: jdk相关

# re: jdk1.5中泛型的实现原理 2006-11-10 11:04

jad目前还不支持jdk 1.5有语法!他是用低版本的的方法来处理的。  回复     

# re: jdk1.5中泛型的实现原理 2006-11-10 13:08 dreamstone

谢谢你提出异议,不过从另一个角度(字节码)来证明这个问题,结果是一样的,
证明过程在这里
  回复     

# re: jdk1.5中泛型的实现原理 2006-11-12 12:02 flyingis

看了你几篇关于java泛型的文章,简单透彻,学习不少。  回复     

# re: jdk1.5中泛型的实现原理 2007-02-03 23:51

不错  回复     


只有注册用户后才能发表评论。


网站导航:
              
 
网站地图