看 黑马java 视频 笔记。
int[] 定义了一个数组,数组元素的类型是int
泛型:定义了一个集合,集合元素的类型就是泛型定义的类型
泛型:将运行时期出现的问题ClassCastException,转移到了编译时期
方便与程序员解决问题,让运行事情问题减少,安全。
泛型格式:通过 <> 来定义要引用的数据类型
使用泛型:在集合框架中很常见,只要见到<>就要使用泛型
泛型类:当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成功能扩展
现在定义泛型来完成扩展。
泛型类定义的泛型,在整个类中有效,如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了
为了让不同的方法可以操作不同类型,而且类型还不确定
那么可以将泛型定义在方法上
特殊之处:静态方法不可以访问类上定义的类型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
<pre name="code" class="java">class Worker {
}
class Teacher {
}
// 早期没定义泛型使,主观判断类型
class Tool {
private Object obj;
public void setObject(Object obj) {
this.obj = obj;
}
public Object getObject() {
return obj;
}
// 泛型定义在方法上
public <T> void show(T t) {
System.out.println("show is " + t);
}
}
// 泛型类
class Util<QQ> {
private QQ q;
public void setObject(QQ q) {
this.q = q;
}
public QQ getObject() {
return q;
}
public void show(QQ q) {
System.out.println("show is " + q);
}
// 静态泛型类,此静态方法存在时,该对象还不存在,如果使用QQ,报错
public static <W> void method(W w) {
System.out.println("show is " + w);
}
}
public class UtilDemo {
public static void main(String[] args) {
/*
* Tool tool =new Tool(); tool.setObject(new Worker()); Worker
* worker=(Worker) tool.getObject();
*/
Util<Worker> util = new Util<Worker>();
util.setObject(new Worker());
// 不需要强转
Worker work = util.getObject();
// 泛型方法
new Tool().show(5);
new Tool().show("shenzhen");
// 静态泛型方法
Util.method(12);
}
}