泛型笔记
------- android培训、java培训、期待与您交流! ----------
泛型:jdk1.5版本以后出现的新特性,用于解决安全问题,是一个类安全机制。
好处:
1.将运行期间出现问题呢classCastException,转移到来了编译时期,方便程序员解决问题。让运行事情问题减少,安全。
2.避免出现强制转换麻烦。
泛型格式:通过<>来定义要操作的引用类型。
使用情况:
通常在定义框架中很常见,只要见到<>就要定义型,<>用来修饰类型。
当使用类型时,将集合中要存储的数据类型当做参数传递到<>即可。
泛型类:定义在类上
当类中需要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,现在定义泛型类来完成扩展
package com.day14.wd; //早期没有泛型时,可以抽取方法,进行定义 class Teacher{ } class worker{ } class Tool{ private Object obj; public void setObject(Object obj){ this.obj=obj; } public Object getObject(){ return obj; } } //泛型后: class Utils<QQ>{ private QQ q; public void setObject(QQ q){ this.q=q; } public QQ getObject(){ return q; } } public class GenericDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Tool tt=new Tool(); tt.setObject(new worker()); worker w=(worker) tt.getObject(); Utils<Teacher> tc=new Utils<Teacher>(); tc.setObject(new Teacher());//设置对象 Teacher tr=tc.getObject(); //得到对象 } }
/*
泛型类定义的泛型,在整个类中有效。泛型类的对象明确要操作的具体类型后,所有的操作的类型固定。
为了让不同的方法可以操作不同的类型,而且类型还不确定,那么可以将泛型定义在方法上。
*/
package com.day14.wd; class Util{ public<T> void show(T t){ System.out.println("show:"+t); }; public<T> void print(T t){ System.out.println("show:"+t); }; } public class GenericDemo2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Util dd=new Util(); dd.show(new String("我要成功")); dd.show(new Integer(232)); dd.print(new String("我一定要成功")); } }
//特殊之处:静态方法不可以访问类上定义的泛型。如果,静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。定义在
修饰符和返回符之间 public static <T> void print(T t){};
-------------------?通配符-------------------
?通配符,可以理解为占位符
? extends E:可以接受E类型或者E的子类型,上限。
? super E:可以接受E类型或者E的父类,下限。
浙公网安备 33010602011771号