韓陽(yáng) 王昊天 范曉娟 河北農(nóng)業(yè)大學(xué)
關(guān)鍵字:Java 泛型 Java泛型基本操作
在JDK1.5中最明顯的變化之一就是添加了對(duì)Java泛型的支持。泛型是指在定義類的時(shí)候不指定具體使用的數(shù)據(jù)類型,而是在外部聲明或?qū)嵗瘜?duì)象的時(shí)候指定使用某些具體類(是具體的類而不是int、char之類的基本數(shù)據(jù)類型)。因此在引入Java泛型之后簡(jiǎn)化了Java程序設(shè)計(jì),泛型解決;數(shù)據(jù)類型的安全性問(wèn)題,增強(qiáng)了Java程序的健壯性。
[權(quán)限:public等] class 類名稱<泛型類型>{
[權(quán)限] 泛型類型 變量名稱;
[權(quán)限] 泛型類型 方法名稱(){};
[權(quán)限] 返回值類型聲明 方法名稱(泛型類型 變量){};
}
例如:
class Person private T name; private V age; public void setName(T name){}; public T getName(){}; public Person(T name,V age){}; } 泛型類中可以使用泛型標(biāo)識(shí)同樣也可以使用普通的數(shù)據(jù)類型,對(duì)此不一定都一致使用泛型標(biāo)識(shí)。 泛型類與普通類的區(qū)別只是基本的數(shù)據(jù)類型改為尖括號(hào)包含的泛型類型。 泛型標(biāo)識(shí)可以使用任意的字母表示,這里更多的使用了T和V表示泛型標(biāo)識(shí)。 類名<具體類> 對(duì)象 = new類名<具體類>(); 例如: Person 具體類是指包裝類或者String,而不是int,char,double之類的基本數(shù)據(jù)類型,由于java中有數(shù)據(jù)類型與類之間的自動(dòng)裝箱操作,所以使用具體類并不會(huì)增加操作的難度。 [權(quán)限] <泛型標(biāo)識(shí)> 返回值類型 方法名([泛型標(biāo)識(shí) 變量]){}; 例如: public [權(quán)限] 構(gòu)造方法名稱 ([泛型類型 變量名稱]){}; 例如: public Person(T name,V age){this.name=name;this.age=age}; 其中的T,V就可以代表一些定義時(shí)的數(shù)據(jù)類型; Java中引入了通配符是“?”,“?”表示任意泛型類型。 例如:public void Person2(Person<?,?> user){}; 2.6.1 泛型接口的定義 [權(quán)限] interface 接口名<泛型標(biāo)識(shí)>{}; 例如: Interface Person 泛型接口的定義多了尖括號(hào)和其中的泛型標(biāo)識(shí),泛型標(biāo)識(shí)可以時(shí)多個(gè),每個(gè)泛型標(biāo)識(shí)之間用逗號(hào)隔開(kāi)。 2.6.2 使用泛型接口 class 類名<泛型標(biāo)識(shí)> implements 接口名<泛型標(biāo)識(shí)>{}; 例如: class Person3 實(shí)現(xiàn)泛型接口的類時(shí),泛型類中泛型標(biāo)識(shí)個(gè)數(shù)要大于或等于泛型接口的中的泛型參數(shù)的個(gè)數(shù),即接口繼承類要繼承接口的泛型標(biāo)識(shí)。 class 類名稱<? extends 具體類 >{}; class 類名稱<? super 具體類>{}; 其中,范圍上限extends指的是具體類和其子類在允許使用范圍內(nèi)。范圍下限super指的是具體類和其父類在允許使用范圍內(nèi)。注意:Number類是(Byte、Short、Long、Integer、Float、Double)的父類。 Java泛型實(shí)現(xiàn)了不同數(shù)據(jù)類型之間的共享代碼段。而且Java使用泛型后程序的安全性得到了很大提升,即避免了類型轉(zhuǎn)化時(shí)異常的出現(xiàn)。因?yàn)樵贘ava泛型的引入之后程序員書寫程序的安全性得到了很大的提升。2.2 泛型對(duì)象定義
2.3 泛型方法
2.4 泛型的構(gòu)造方法
2.5 通配符的使用
2.6 定義泛型接口及使用
2.7 受限泛型
3 結(jié)束語(yǔ)