java集合框架---泛型重点知识:
知识点1.什么事泛型?
泛型<E>:jdk1.5版本出现新特性,用于解决安全问题,是一个安全机制。
实例:
//当在此集合容器中添加了两种类型元素时,此程序编译通过,运行时会报出类型转换异常Exception in thread "main" java.lang.ClassCastException:
ArrayList a1=new ArrayList();
//添加泛型之后在编译就会报出错误,不允许添加非String类对象。
知识点2:泛型类的定义与用法。
定义:class 类名<E>
实例:class Tool<QQ>{
private QQ q;
public void setObject(QQ q)
{
this.q=q;
}
public QQ getObject()
{
return q;
}
}
用法:当一个工具类调用其他类的对象时,使用泛型,可以限定调用的对象类型,避免产生运行时发生类型转换异常。
实例:
未添加泛型之前:
/*
* 编译正确,运行报错。
* Tool t=new Tool();
t.setObject(new Student());
Worker w=(Worker)t.getObject();
*/
添加泛型之后:
Tool<Worker> t=new Tool<Worker>();
//加上泛型之后,编译时期就出错了。
//t.setObject(new Student());
//添加正确的元素
t.setObject(new Worker());
//使用强制转换
//Worker w=(Worker) t.getObject();
//添加泛型以后,不用强制转换,简化代码
Worker w=t.getObject();
知识点3: 泛型定义在接口上。
定义:interface 接口名<T>
/*实例:
* interface inter<T>
{
void show(T t);
}
class InterDemo implements inter<String>
{
public void show(String t)
{
System.out.println("show:"+t);
}
}
* 弊端:接口固定了要操作的类型。
* 措施:将在实现类上添加泛型,就可以传递任何类型的元素。
class InterDemo<T> implements inter<T>
{
public void show(T t)
{
System.out.println("show:"+t);
}
}
public class GenericDemo5 {
public static void main(String[] args) {
InterDemo i=new InterDemo();
//传递Integer类型。
i.show(6);
//传递String类型。
i.show("dsfsd");
}
}
*/