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 閱讀(195) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 丘北县| 昌图县| 寻乌县| 漳州市| 丰镇市| 龙山县| 清苑县| 营口市| 阳信县| 莲花县| 攀枝花市| 阜康市| 杨浦区| 兰西县| 沧州市| 曲周县| 曲靖市| 南岸区| 庆安县| 城市| 罗平县| 西昌市| 清远市| 红安县| 新营市| 东莞市| 杭锦后旗| 乌鲁木齐县| 兴仁县| 舒城县| 盐边县| 宜川县| 东丰县| 南漳县| 贵定县| 陕西省| 丘北县| 犍为县| 吴堡县| 泾阳县| 南溪县|