泛型
1,泛型:JDK1.5后java出现的新特性,用于解决安全问题,是一种类型安全机制参照的是数组的定义格式,力求在编译时就能报错
2,升级有3方面:1,高效2,简化书写3,安全
3,出现的好处:
1,将运行时ClassCastException,转移到了编译时期方便程序员解决问题
让运行时的问题减少,安全。
2,避免了强制转换的麻烦。
4,泛型格式:通过<>来定义要操作的引用数据类型。其实<>就是用来接受类型的。当使用集合时将集合中要存储的数据类型作为参数传递到<>即可。
5,泛型类:
class Utils<T>
{
private T obj;
public void setObject(T obj)
{
this.obj=obj;
}
public T getObject()
{
return obj;
}
}
class GenericDemo3
{
public static void main(String[] args)
{
Utils<Student> t=newUtils<Student>();
t.setObject(new Student());
Student w=t.getObject();
System.out.println(w);
}
}
什么时候定义泛型类:
当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,现在定义泛型来完成扩展
6,泛型方法
class Demo
{
public <T> void show(T t)
{
System.out.println("show:"+t);
}
public <T> void print(Tt)
{
System.out.println("print:"+t);
}
}
Demo d=new Demo();
d.show("hahah");
d.print(new Integer(8));
7,静态方法泛型
静态方法不可以访问类上定义的泛型
如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。
public static <T> voidshow()
泛型一定要定义在返回类型前面。
8,泛型接口
interface Inter<T>
{
void show(T t);
}
class InterImpl<T> implements Inter<T>
{
public void show(T t)
{
System.out.println(“show”+t);
}
}
9,泛型限定
当类型不确定时可以用一个通配符?来表示
不明确类型的情况下用?表示
ArrayList<? extends Person> al
意思:al为Person类型以及Person的子类型
泛型限定有两个限制:上限和下限
?:通配符,又叫占位符
? extends E:可以接收E及E的子类à上限限定
? super E :可以接收E类型或者E的父类à下限限定