专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础教程:java泛型教程

Java基础教程:java泛型教程

更新时间:2020-03-03 11:03:03 来源:星辉 浏览1929次


  为什么使用泛型?


  Java编译器在编译时加强泛型代码的类型检查,避免运行时不可预料的错误。


  泛型支持程序化类型作为参数,使方法兼具灵活性。


  泛型能让你实现泛型算法,更具有通用性。


  泛型类型和方法


  泛型类型


  参数化类型的类或接口。


  格式:classname{/*...*/},其中T1,T2称为typeparameters。


  调用泛型类型(又称为参数化类型):BoxintegerBox,传入具体的类型。


  实例化泛型类型:BoxintegerBox=newBox();


  泛型方法


  参数化类型的方法。


  格式:publicstaticbooleancompare(Pairp1,Pairp2),static,non-static均可。


  调用泛型方法:Util.compare(p1,p2)。可以利用类型推断,像调用普通方法一样调用泛型方法,如:Util.compare(p1,p2)


  通过extends来限定泛型类型和方法的边界


  通配符和子类型


  Integer是Number的子类,但参数化类型Box和Box没有关系,他们的共同父类是Object。


Java基础教程:java泛型教程


  泛型类型之间几乎没有关系,但可以通过通配符在泛型类型之间建立关系。


Java基础教程:java泛型教程


  ?通配符,用于参数、字段、局部变量的类型,不用于泛型类型和方法。


  上界:List,不确定类型是指定类型或指定类型的子类,可以放松对变量的限制,如匹配List,List。例如,List仅匹配Number类型的List,而List匹配Number类型和其子类的List。


  无界:List,不确定类型的List。使用场景:1)List的元素都是Object类型,直接可以使用Object的方法。2)泛型类中的方法不依赖于类型参数。


  下界:List,不确定类型是指定类型或指定类型的父类,可以尽量提高灵活性,如匹配List,List,List


  通配符使用的场景


  把参数变量看作两类:


  1、『in』提供给方法内部使用,即传入数据。


  2、『out』提供给方法外部使用,即传出数据。


  利用WildcardCapture特性,通配符使用的场景为:


  1、『in』使用上界通配符


  2、『out』使用下界通配符


  3、『in』可以使用Object的方法,使用无界通配符


  4、即用作『in』,又用作『out』的,不使用通配符


  泛型的限制


  不能用primitive类型实例化泛型。如:Pairp=newPair<>(8,'a');


  不能实例化参数类型。如:newE();


  不能定义类的静态类型字段是参数类型。如:privatestaticTos;


  参数类型不能使用instanceof和类型转换。如:listinstanceofArrayList


  不能创建参数化类型数组。如:List[]arrayOfLists=newList[2];


  不能Create,Catch,或者Throw参数化类型对象。如:classMathExceptionextendsException{/*...*/}


  重载方法不能使用参数化类型被擦除后拥有同样的原生类型。如:


  publicvoidprint(SetstrSet){}


  publicvoidprint(SetintSet){}


  被编译擦除后是一样的publicvoidprint(SetstrSet){}


Java基础教程:java泛型教程


      以上就是星辉Java培训机构小编介绍的“Java基础教程:java泛型教程”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>