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中的泛型只简化了代码的编写,并没有提高性能的原因。因为转型并没有去掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值