深圳網(wǎng)站建設(shè) 工作室如何做宣傳推廣效果最好
?筆記匯總:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)》學(xué)習(xí)筆記
?# 第 13 章 泛型與集合框架
Java 提供了實(shí)現(xiàn)常見數(shù)據(jù)結(jié)構(gòu)的類,這些實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的類通稱為 Java 集合框架。
在 JDK1.5 后, Java 集合框架開始支持泛型,本章首先介紹泛型,然后講解常見數(shù)據(jù)結(jié)構(gòu)類的用法。
13.1 泛型
泛型 (Generics) 是在 JDK1.5 中推出的,其主要目的是可以建立具有類型安全的集合框架,如鏈表、散列映射等數(shù)據(jù)結(jié)構(gòu),本節(jié)主要對(duì) Java 的泛型有一個(gè)初步的認(rèn)識(shí)(基本夠用)。
定義泛型類
使用 "class 名稱〈泛型列表〉”聲明一個(gè)類,為了和普通的類有所區(qū)別,這樣聲明的類稱作泛型類,如:
class People<E>
其中 People 是泛型類的名稱, E 是其中的泛型,
也就是說我們并沒有指定 E 是何種類型的數(shù)據(jù),它可以是任何對(duì)象或接口,但不能是基本類型數(shù)據(jù)。
也可以不用 E 表示泛型,使用任何一個(gè)合理的標(biāo)識(shí)符都可以,但最好和我們熟悉的類型名稱有所區(qū)別
// 不使用泛型
class Cone {double height,Circle bottom,public Cone (Circle b) {bottom = b;}
}// 使用泛型
class Cone<E> {double height,E bottom,public Cone (E b) {bottom = b;}
}
泛型類聲明對(duì)象
和普通的類相比,泛型類聲明和創(chuàng)建對(duì)象時(shí),類名后多了一對(duì)“ <> ”
而且要用具體的類型替換“ <> ”中的泛型(或使用統(tǒng)配?)。
用具體的類型
用具體的類型替換“ <> ”中的泛型,例如,用具體類型 CircIe 替換泛型 E :
Circle circle = new Circle();
Cone<Circle> coneOne; // 具體類型 Circle ,不可以用泛型 E : Cone<E> cone0ne;
coneOne = new Cone<Circle>(circle);
使用統(tǒng)配?
泛型類聲明對(duì)象時(shí),可以使用通配符?來限制泛型的范圍。
例如,限制泛型 E 的范圍:
Cone<? extends Geometry> coneOne;
如果 Geometry 是類,那么“<? extends Geometry >”中的“:? extends Geometry ”表示任何Geometry 類的子類或 Geometry 類本身(可理解為泛型 E 被限制了范圍);
如果 Geometry 是接口,那么“<? extends Geometry >”中的“:? extends Geometry" 表示任何實(shí)現(xiàn) Geometry 接口的類。
假設(shè) Geometry 是接口, Circle 是實(shí)現(xiàn)了 Geometry 接口的類,那么下列創(chuàng)建 cone()ne 就是合法的:
Circle circle = new Circle();
coneOne = new Cone<CircIe>(circ1e);
再如:
Cone <? super B > coneOne;
這里 B 必須是一個(gè)類,不可以是接口,“<? super B >”中的“:? super B ”表示 B 類的任何父類(包括 B 類本身)。
泛型類聲明對(duì)象時(shí),也可以僅僅使用通配符“?”代表泛型 E ,但不限制泛型 E 的范圍(”?“代表任意類型),創(chuàng)建對(duì)象時(shí),必須用具體的類型,例如:
Circle circle = new Circle();
Cone<?> coneOne = new Cone<Circle>(circle);
小結(jié)
Java 泛型的主要目的是可以建立具有類型安全的數(shù)據(jù)結(jié)構(gòu),如鏈表、散列表等數(shù)據(jù)結(jié)構(gòu),
最重要的一個(gè)優(yōu)點(diǎn)就是:在使用這些泛型類建立的數(shù)據(jù)結(jié)構(gòu)時(shí),不必進(jìn)行強(qiáng)制類型轉(zhuǎn)換,即不要求進(jìn)行運(yùn)行時(shí)類型檢查。
JDK 1.5 是支持泛型的編譯器,它將運(yùn)行時(shí)的類型檢查提前到編譯時(shí)執(zhí)行,使代碼更安全。
Java 推出泛型的主要目的是為了建立具有類型安全的數(shù)據(jù)結(jié)構(gòu),如鏈表、散列映射等。
13.2 鏈表
還在做筆記中,請(qǐng)耐心等待