通俗的讲,泛型就是模板……模板懂得吧?你往一个往一个模具里放水泥,水泥只能放那么多,而且只能是模板的造型
简单的例子:
例如arrayList<E>
其中E就是你要自己给出的模板,你想放什么类型就用什么
arrayList<Integer> list = new arrayList<Integer>
这样定义后list中,只能放入Integer类型了(不然放不下过多的水泥,可以这样理解,其他水泥样子规格不对)
以下为我个人笔记的一部分
泛型
<E>为泛型
1.类型泛型
class name<E>
{
public E method()
{
return E;
}
}
2.方法泛型
class name
{
public static <E> method(E parameter)
{
return E
}
}
注意方法泛型 <E>必须写在权限和static描述修饰符后面
如果是静态方法必须在static后面加上<E>(因为静态方法,传入参数必须也是静态类型)
3.接口泛型
interface name<E>
{
void method(E)
}
class studend implemnts name<String>
泛型限定
当不确定传入类型的时候可以< ?>以问号表达
注意泛型不可以用父子类多态
ArrayList<Person> p = new ArrayList<Student>();这句是错误的!!!!!!不可以
因为后者只能放入student而前者只能放person到集合之中
还有可以限定部分类型
<? extends>意思是可以传入E类型或者其子类,上限限定
<? super E>意思是可以传入super类(E的父类)也可以是E类,下限限定
|