???
如果你還不知道泛型的使用請(qǐng)看這里??? 在JDK1.5中加入了泛型,能幫助我們簡化代碼,能解決不少問題,那JDK1.5中是如何實(shí)現(xiàn)的呢 ?
JDK1.5中泛型的實(shí)現(xiàn)是擦拭法實(shí)現(xiàn)的,不同與c++中的泛型。說擦拭法可能有點(diǎn)難理解,所以從下邊的角度理解一下:
我們寫一個(gè)程序
?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反編譯后的結(jié)果:
?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?
看到這個(gè)是否明白了嗎 ?
在JDK1.5中,只是在編譯期作了下手腳,就是在你編譯之前,自動(dòng)補(bǔ)充了轉(zhuǎn)型,然后編譯實(shí)現(xiàn)的。
所以JDK1.5中的泛型只簡化了代碼的編寫,并沒有提高性能的原因。因?yàn)檗D(zhuǎn)型并沒有去掉。