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