1.泛型類(lèi)
publicclassDog{privateTage;publicDog(Tage){this.age=age;
}publicTgetAge(){returnage;
}publicstaticvoidmain(String[]args){//Java7之后,尖括號(hào)中是不需要填寫(xiě)參數(shù)的Dogdog=newDog<>(“28”);
System.out.println(dog.getAge());
}
}
一般的類(lèi)
publicclassDog{privateObjectage;publicDog(Objectage){this.age=age;
}publicObjectgetAge(){returnage;
}publicstaticvoidmain(String[]args){
Dogdog=newDog(“28”);
System.out.println(dog.getAge());
}
}
這樣的代碼是完全可以履行了,那為什么還需要泛型類(lèi)?
1.安全性
publicclassDog{privateObjectage;publicDog(Objectage){this.age=age;
}publicObjectgetAge(){returnage;
}publicstaticvoidmain(String[]args){
Dogdog=newDog(“28”);
Integerage=(Integer)dog.getAge();
System.out.println(age);
}
}
上面的代碼編譯是完全可以經(jīng)過(guò)的,但是履行的時(shí)候就會(huì)出現(xiàn)ClassCastException反常
2.可讀性好,省去了反復(fù)的強(qiáng)制類(lèi)型轉(zhuǎn)化。
關(guān)于泛型類(lèi),java編譯器會(huì)將泛型代碼轉(zhuǎn)化成一般的非泛型代碼,
所以關(guān)于虛擬機(jī)來(lái)說(shuō),是沒(méi)有泛型類(lèi)的概念的。
為什么這么規(guī)劃呢?應(yīng)為泛型是jdk6今后才有的,為了向下兼容。
泛型辦法:
publicclassTestMethod{publicstaticbooleanisHas(T[]arr,Telemt){for(Tt:arr){if(t.equals(elemt)){returntrue;
}
}returnfalse;
}publicbooleanisString(Ss){if(sinstanceofString){returntrue;
}returnfalse;
}publicstaticvoidmain(String[]args){
Integer[]arr={1,5,6,8};
System.out.println(isHas(arr,8));
TestMethodtestMethod=newTestMethod();
System.out.println(testMethod.isString(5));
}
}
一個(gè)辦法是不是泛型和他的類(lèi)是不是泛型沒(méi)有任何關(guān)系。
泛型辦法需要在辦法的返回值前先聲明,在從后邊的代碼中使用。
泛型接口:
參照Comparable接口。
publicclassTestComparableimplementsMyComparable{privateIntegern;publicTestComparable(intn){this.n=n;
}
@OverridepublicbooleanisEquals(TestComparabletestComparable){returnthis.n.intValue()==testComparable.getN().intValue()?true:false;
}publicIntegergetN(){returnn;
}publicstaticvoidmain(String[]args){
TestComparabletestComparable1=newTestComparable(2);
TestComparabletestComparable2=newTestComparable(2);
System.out.println(testComparable1.isEquals(testComparable2));
}
}interfaceMyComparable{booleanisEquals(Tt);
}
類(lèi)型參數(shù)承繼某個(gè)類(lèi)
/***測(cè)驗(yàn)承繼class*/publicclassTestInheritClassextendsFather>{privateTt;publicTestInheritClass(Tt){this.t=t;
}voidoutput(){
System.out.println(t.getName());
}publicstaticvoidmain(String[]args){
Childchild=newChild(“李逵”);
TestInheritClasst=newTestInheritClass<>(child);
t.output();
}
}classFather{privateStringname;publicStringgetName(){returnname;
}publicFather(Stringname){this.name=name;
}
}classChildextendsFather{publicChild(Stringname){super(name);
}
}
測(cè)驗(yàn)承繼接口
/***測(cè)驗(yàn)承繼接口*/publicclassTestInheritInterfaceextendsIFruits>{privateTt;publicTestInheritInterface(Tt){this.t=t;
}voidoutput(){
t.shape();
}publicstaticvoidmain(String[]args){
Appleapple=newApple();
TestInheritInterfacet=newTestInheritInterface<>(apple);
t.output();
}
}interfaceIFruits{//形狀voidshape();
}classAppleimplementsIFruits{
@Overridepublicvoidshape(){
System.out.println(“蘋(píng)果是圓形的。”);
}
}
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專(zhuān)線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹(shù)莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專(zhuān)線:400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專(zhuān)線/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)