志在指尖
用双手敲打未来

java泛型demo

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(“苹果是圆形的。”);
}
}

未经允许不得转载:IT技术网站 » java泛型demo
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载