如果你还不知道泛型的使用请看这里 在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中的泛型只简化了代码的编写,并没有提高性能的原因。因为转型并没有去掉。