posts - 37,comments - 7,trackbacks - 0
           

          泛型的引入使得 Java 語言中的類型系統更加復雜。以前,該語言具有兩種類型 —— 引用類型和基本類型。對于引用類型,類型 的概念基本上可以互換,術語子類型子類 也可以互換。

          隨著泛型的引入,類型和類之間的關系變得更加復雜。List<Integer>List<Object> 是不同的類型,但是卻是相同的類。盡管 Integer 擴展 Object,但是 List<Integer> 不是 List<Object>,并且不能賦給 List<Object> 或者強制轉換成 List<Object>

          另一方面,現在有了一個新的古怪的類型叫做 List<?>,它是 List<Integer>List<Object> 的父類。并且有一個更加古怪的 List<? extends Number>。類型層次的結構和形狀也變得復雜得多。類型和類不再幾乎是相同的東西了。

          extends 的新含意 

          在 Java 語言引入泛型之前,extends 關鍵字總是意味著創建一個新的繼承自另一個類或接口的類或接口。

          引入泛型之后,extends 關鍵字有了另一個含意。將 extends 用在類型參數的定義中(Collection<T extends Number>)或者通配符類型參數中(Collection<? extends Number>)。

          當使用 extends 來指示類型參數限制時,不需要子類-父類關系,只需要子類型-父類型關系。還要記住,有限制類型不需要是該限制的嚴格子類型;也可以 該限制。換句話說,對于 Collection<? extends Number>,您可以賦給它 Collection<Number>(盡管 Number 不是 Number 的嚴格子類型)和 Collection<Integer>Collection<Long>Collection<Float> 等等。

          在任何這些含意中,extends 右邊的類型都可以是參數化類型(Set<V> extends Collection<V>)。

          posted on 2005-08-24 11:36 Dave 閱讀(191) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 阳高县| 大庆市| 霍州市| 南通市| 开阳县| 临邑县| 民县| 洮南市| 邓州市| 深泽县| 泗水县| 贵德县| 区。| 张北县| 宿迁市| 莱芜市| 定南县| 原阳县| 洛川县| 汶川县| 大新县| 福鼎市| 台安县| 佛学| 松桃| 望谟县| 孟州市| 孝义市| 乐都县| 长垣县| 阳高县| 揭阳市| 宁波市| 瑞丽市| 顺昌县| 瓮安县| 天台县| 得荣县| 剑川县| 大荔县| 密山市|