泛型:
概念:泛型实现了参数化类型的概念 ,使代码可以应用于多种类型
出现的最初目的:希望类和方法能够具备最广泛的表达能力
促成泛型出现的原因:为了创造容器类 。就是存放要使用的对象的地方 通常而言 我们使用容器存储同一种类型的对象
泛型的主要目的之一就是用来指定容器要持有什么类型的对象,并由编译器来保证类型的正确性
泛型类:构建方法:public class holder3<T> T没有任何限制 此时相当于Object
holder3<Double> douFoo=new holder<Double>(new double("33"));
泛型中extends不代表继承,他是类型的范围限制
有界类型:class holder<T extends Collection> 这里的extends已经不是继承的含义。应理解为T类型是实现Collection接口的类型,或者T是继承了XX类的类型
通配符泛型:为了解决类型被限制 不能动态根据实例来确定的缺点 ,引入“通配符泛型”
通配符泛型格式为<?extends Collection> "?"表示未知类型,这个类型是实现Collection接口
注:
1.如果只指定了<?>而没有extends,则默认是允许Object及其以下的任何java类,也就是任意类
2.通配符泛型不单可以向下限制 还可以向上限制<?super Double> 表示类型只能接受Double及其上层父亲类型,如:Number,Object
3.泛型类定义可以有多个泛型参数 ,中间用逗号隔开 可以定义泛型接口和泛型方法
java泛型方法:是否拥有泛型方法,与其所在类是否泛型没有关系,要定义泛型方法,只需将参数列表置于返回值前
如:public class ExampleA{
public<T>void f(T x){
System.out.println(x.getClass.getName());
} }