泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行.
举个直观的例子体现泛型的作用.
import java.util.ArrayList
import java.util.List
class A
{
public String a="1"
//使用泛型的方法
public List<A>generic()
{
List<A>list = new ArrayList<A>()
list.add(new A())
return list
}
//未使用泛型的方法
public List unGeneric()
{
List list = new ArrayList()
list.add(new A())
return list
}
public static void main(String []args)
{
//定义泛型的list,相当于在申明时就预订这个list中只允许存储类型是A的对象,所以在获取list内单个对象时不用进行强制转换
List<A>list = new A().generic()
A a = list.get(0)
System.out.println(a.a)
//不使用泛型定义的list在获取list的对象时就要进行强制转换
List listUn = new A().unGeneric()
A a1 = (A)listUn.get(0)
System.out.println(a1.a)
}
}
具体泛型更多的官方知识你可以去百度百科搜一下。
圆括号在这里意思是强转成E类型,尖括号是泛型,比如List<E>list = new ArrayList<E>()意思是new一个list,里面类型只能是E对象
是泛型通常很多集合类 都会以Object做存储对象
通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。