`

JDK1.5中泛型的实现原理

    博客分类:
  • jdk
阅读更多
在JDK1.5中加入了泛型,能帮助我们简化代码,能解决不少问题,那JDK1.5中是如何实现的呢 ?
JDK1.5中泛型的实现是擦拭法实现的,不同与c++中的泛型。说擦拭法可能有点难理解,所以从下边的角度理解一下:
我们写一个程序 1 package com.jdk15;
 
  import java.util.ArrayList;
 
  public class Generic {
      public static void main(String[] args){
          ArrayList<String> list = new ArrayList<String>();
          list.add("a");
          list.add("b");
         String str = list.get(0);
     }
}编译成.class的文件
然后用Jad反编译后的结果:
  package com.jdk15;

  import java.util.ArrayList;
 
public class Generic
{

     public Generic()
     {
     }

     public static void main(String args[])
     {
        ArrayList list = new ArrayList();
         list.add("a");
         list.add("b");
         String str = (String)list.get(0);
      }
}
看到这个是否明白了吗 ?
在JDK1.5中,只是在编译期作了下手脚,就是在你编译之前,自动补充了转型,然后编译实现的。
所以JDK1.5中的泛型只简化了代码的编写,并没有提高性能的原因。因为转型并没有去掉。
分享到:
评论
1 楼 buru 2011-07-03  
这根本证明不了,是你反编译器有问题

相关推荐

Global site tag (gtag.js) - Google Analytics