java泛型demo

IT技术2年前 (2022)发布 投稿用户
0

1.泛型类

publicclassDog{privateTage;publicDog(Tage){this.age=age;
}publicTgetAge(){returnage;
}publicstaticvoidmain(String[]args){//Java7之后,尖括号中是不需要填写参数的Dogdog=newDog<>(“28”);
System.out.println(dog.getAge());
}
}
一般的类
publicclassDog{privateObjectage;publicDog(Objectage){this.age=age;
}publicObjectgetAge(){returnage;
}publicstaticvoidmain(String[]args){
Dogdog=newDog(“28”);
System.out.println(dog.getAge());
}
}
这样的代码是完全可以履行了,那为什么还需要泛型类?

JAVA


1.安全性
publicclassDog{privateObjectage;publicDog(Objectage){this.age=age;
}publicObjectgetAge(){returnage;
}publicstaticvoidmain(String[]args){
Dogdog=newDog(“28”);
Integerage=(Integer)dog.getAge();
System.out.println(age);
}
}
上面的代码编译是完全可以经过的,但是履行的时候就会出现ClassCastException反常
2.可读性好,省去了反复的强制类型转化。
关于泛型类,java编译器会将泛型代码转化成一般的非泛型代码,
所以关于虚拟机来说,是没有泛型类的概念的。
为什么这么规划呢?应为泛型是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));
}
}
一个办法是不是泛型和他的类是不是泛型没有任何关系。
泛型办法需要在办法的返回值前先声明,在从后边的代码中使用。
泛型接口:
参照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);
}
类型参数承继某个类
/***测验承继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);
}
}
测验承继接口
/***测验承继接口*/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(“苹果是圆形的。”);
}
}

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章