1.泛型类
用<T>表示该类接受泛型,里面的T是具体类型(类),但是不接受基本类型,一定需要包装类。也可以进行多个泛型设置,如class Info<T,V>。
2.泛型引用传递
泛型对象作为引用参数在函数传递的时候,泛型指定的类型不能向上或向下进行转换;在参数中只能指定泛型声明时一致的类型,或者运用通配符?或者T等字母。
但是如果当fun()函数里面是多个参数的时候,每个参数泛型类型都用T的话,则两个参数的类型必须一致;而用“?”则可以不一致。
3.泛型受限上下限
<? extends A>,<? super A>分别表示该泛型类型设置具体类型时候,必须为A的子类或者A的父类;具体设置时候只需要在正常设置泛型的时候,用以上两个格式替换原先的<>即可;
4.泛型接口
接口实现有两种形式:
第一,先不具体定义泛型实现接口,子类继续用泛型,等到具体调用的时候在具体定义泛型类型;
第二,在实现接口的时候,直接给接口泛型定义具体类型,之后就可以在子类方法中直接用具体类型了;
5.泛型方法
泛型方法定义格式:[访问权限](static)<T>[返回类型][方法名](T t);
在方法中定义参数传递时候,可以通过以上方式定义,则T的具体类型根据传入参数的具体类型定义;如:
当然也可以去掉static后面的<T>,直接在参数中用通配符?来接收泛型引用,如:
注:只有在泛型具体定义是数字类型,才能在该方法内执行数字运算,否则,如果直接用<?>,将无法直接运行数字运算(因为无法确定具体类型)。