從頭認識java-13.1 泛型與容器(容器的演變)

來源:互聯網
上載者:User

從頭認識java-13.1 泛型與容器(容器的演變)

這一章節我們來討論一下泛型與容器,準確來說是由於容器的需求而產生泛型的需求。

我們平常在編程的時候,大部分都是用了容器來裝載對象,我們來看一下容器的演變。

1.普通容器

 

package com.ray.ch11;public class Test {public static void main(String[] args) {Holder holder = new Holder(new RealObject());RealObject realObject = holder.getRealObject();}}class RealObject {static {System.out.println(loading object);}}class Holder {private RealObject realObject;public Holder(RealObject realObject) {this.realObject = realObject;}public RealObject getRealObject() {return realObject;}}

上面的代碼展示了能夠裝載RealObject這個類型對象的 容器,但是由於只是能夠儲存單一類型,因此實用性比較差。

 

 

2.萬能容器

 

package com.ray.ch11;public class Test {public static void main(String[] args) {Holder holder = new Holder(new RealObject());RealObject realObject = (RealObject) holder.getObject();Holder holder2 = new Holder(new RealObject2());RealObject2 realObject2 = (RealObject2) holder2.getObject();}}class RealObject {static {System.out.println(loading object);}}class RealObject2 {static {System.out.println(loading object2);}}class Holder {private Object object;public Holder(Object object) {this.object = object;}public Object getObject() {return object;}}

我們修改一下上面的代碼,把holder裝載的類型改成Object,這個時候Holder可以裝載任何的類型對象的容器。

 

雖然上面的容器是萬能,但是一般編程的時候是不會用到各種類型的對象,大部分的時候是儲存單一類型的對象,而且,在使用的過程中需要強制轉換,這個是一個大問題,因為不一定知道需要轉換對象的類型,因此,需要引入泛型。

 

3.泛型容器

 

package com.ray.ch11;public class Test {public static void main(String[] args) {Holder holder = new Holder(new RealObject());RealObject realObject = (RealObject) holder.getObject();Holder holder2 = new Holder(new RealObject2());RealObject2 realObject2 = (RealObject2) holder2.getObject();}}class RealObject {static {System.out.println(loading object);}}class RealObject2 {static {System.out.println(loading object2);}}class Holder {private T object;public Holder(T object) {this.object = object;}public Object getObject() {return object;}}

我們再次修改容器,引入泛型特性,這個時候容器基本滿足需求,而且在編譯的過程中也可以進行類型檢查,保證類型的正確性。

 

 

4.泛型的核心概念

就是我告訴編譯器我想使用什麼類型的容器,然後編譯器就會根據需要處理一些細節(例如:類型檢測)

 

總結:這一章節主要講述容器的演變,以及泛型與容器的關係。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.