泛型: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 { /** }/* package com.day14.wd; class Util{ /** }// |
特殊之处:静态方法不可以访问类上定义的泛型。如果,静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。定义在
修饰符和返回符之间 public static <T> void print(T t){};
-------------------?通配符-------------------
?通配符,可以理解为占位符
? extends E:可以接受E类型或者E的子类型,上限。
? super E:可以接受E类型或者E的父类,下限