<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Simple
    回歸自我,努力奮斗
    posts - 0,comments - 0,trackbacks - 0
        JDK5引入泛型,給我們編程帶來了很大的方便,它讓我們的類更加通用.但曾一段時間對java泛型中獨有的擦除概念,迷惑不解.什么是擦除?擦除的實質是什么?為什么要擦除?經過一段時間的研究后,總算有所體會,下面與大家分享一下,學習中的經驗.
        個人理解擦除說的通俗一點就是轉型,就是將泛化的不確定類型,轉型到某一確定的類型,這一確定的類型我們稱之為邊界,這一轉型的過程就是擦除。這樣說你可能還不好理解,我來寫個例子,根據例子來剖析擦除的實質。
        源代碼
        
    public class Bootstrap {
        
    public static void main(String[] args) {
            List
    <Number> list = new ArrayList<Number>();
            list.add(
    1);
            list.add(
    new Float(2.1));
            Number number 
    = list.get(0);
        }

    }

        反編譯后的代碼
    public class Bootstrap
    {

        
    public
     Bootstrap()
        
    {
        }


        
    public static void main(String args[])
        
    {
            List list 
    = new
     ArrayList();
            list.add(Integer.valueOf(
    1
    ));
            list.add(
    new Float(2.1000000000000001D
    ));
            Number number 
    = (Number)list.get(0
    );
        }

    }
        通過比較反編譯后發現,源代碼在編譯后產生的代碼中,并不存在泛型。它就像我們以前沒有泛型時,編寫的代碼一樣。原有的泛型信息并不存在,我們說它被擦除了,那被擦除成什么了呢?我們看Number number = list.get(0);這句代碼,當我們試圖從list中獲取元素時,java編譯器會自動的給我們進行強制轉型,這種轉型后的目標類都是Number,致使我們獲取的元素都是Number類型了,原有的類型Integer和Float都被擦除掉了,并沒有任何地方存儲了元素的確切類型,我們無法知道獲取元素的確切類型,只知道獲取的是個邊界類型Number。這就是java泛型的擦除實質。這兒也可以看出JAVA的泛型在運行時并不使用,它只在編譯的時候發揮作用。
        為什么java會擦除泛型信息呢?其實這是可以理解的,因為在以前的JDK版本中,并不存在泛型這一概念,為了兼容以前的版本,讓新寫的泛型程序能在以前得版本上運行而采用了這種折中的辦法。
        然而,由于泛型的不徹底,也給我們帶來了一定的困惑,其中最大的困惑就是,我們不能使用new 關鍵字來構造泛型.如new T();這樣做是不合法的編譯器無法通過。雖然說在現有的JDK版本上,編譯錯誤可以理解,但是著實讓人不爽.泛型中還存在其他的一些問題,有興趣的同學可以研究一下:http://www.ibm.com/developerworks/cn/java/j-jtp01255.html
    posted on 2011-08-08 10:00 Mr.simple 閱讀(206) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产不卡免费视频| 成年男女男精品免费视频网站| 日本特黄特色aa大片免费| 久久精品国产亚洲AV忘忧草18 | 免费看国产精品3a黄的视频| 亚洲国产av高清无码| 国产四虎免费精品视频| 国产精品久久亚洲不卡动漫| 久久久久久久久免费看无码| 亚洲av永久无码一区二区三区| 免费人成激情视频| 久久免费视频网站| 久久精品国产亚洲AV电影| 国产精品永久免费10000| 亚洲国产成人久久精品大牛影视| 免费人妻av无码专区| a毛片在线免费观看| 亚洲精选在线观看| 性色av无码免费一区二区三区| 无码天堂va亚洲va在线va| 亚洲无码日韩精品第一页| 97在线免费观看视频| 91亚洲一区二区在线观看不卡| 在线观看免费人成视频色| 国产精品亚洲综合网站| 国产亚洲福利精品一区| 美女视频黄免费亚洲| 黄色免费网址大全| 亚洲综合激情六月婷婷在线观看| 免费看片A级毛片免费看| 巨胸喷奶水www永久免费| 亚洲精品白色在线发布| 亚洲av成人一区二区三区在线观看| 国产一级a毛一级a看免费人娇| 亚洲国产成人片在线观看| 啦啦啦高清视频在线观看免费 | 无遮挡a级毛片免费看| 亚洲av成人无码久久精品| 麻豆国产VA免费精品高清在线| 中出五十路免费视频| 亚洲欧美日韩国产精品一区|