1.泛型概述ArrayList<String> a1=new ArrayList<String>();
定义容器类型
好处:将运行时期出现的问题转移到编译时期
方便程序员解决问题。
避免了强制转换的安全问题
相对的迭代器:Iterator<String>it=a1.iterator()
相对的比较接口:class ccc Implements Comparator<String>
2.通常在集合框架经常使用泛型
3.泛型类:class Utils<qq>{
private qq q;
public void setname(qq q){
this.q=q;
}
public qq getname(){
return q;
}
}
主函数定义:Utils<worker> u=new Utils<worker()>;
u.setname(new worker());
wourker q=u.getname();
当类中要操作的数据类型不确定的时候,早期定义Object来实现扩展
现在通过
泛型类定义的泛型,在整个类有效,如果被方法调用,那么泛类型的对象
要操作的的具体类型等,所有要操作的类型都已经固定了。
为了相同方法操作不同类型,可以泛型定义方法。
4.泛型方法public<T>void (T t){};传入什么类,操作什么对象。和集合相似
可以在泛型类中定义泛型方法,泛型也定义在接口上
5.特殊之处,静态方法不可以访问类上的泛型,可以将泛型定义在方法上
6.泛型限定:(上限定)public static void pri(AtrayList<?extends person> a1){
Iterstor<?> it=a1.iterator();}只接受person类及其继承person的子类
(下限定)public static void pri(AtrayList<?super person> a1){
Iterstor<?> it=a1.iterator();}只接受person类及其继承person的父类
提高拓展性,但不能调用特有方法
当子类继承父类方法并没有复写而用SUPER代替时,用泛型ArrayList<>定义子类时
语句为ArrayList<子类名> a1=new ArrayList<父类名>();
Comparator本身具备泛型接口,可直接定义父类接口提高拓展性 |
|