首页 > 代码库 > java泛型

java泛型

泛型:JDK1.5版本以后出现新特性,用于解决安全问题,是一个安全机制.

升级3部 高效 简化书写 安全

好处:

1将运行时期出现问题ClassCastException类型转换异常,转移到了编译时期.方便程序员解决问题,让运行事情问题减少,安全.

2.避免了强制转换麻烦.

在使用java提供的对象时,什么时候写泛型呢?

通常在集合框架中很常见,只要见到<>就要定义泛型.

其实<>就是用来接收类型的.

什么时候定义泛型类?

 

当类中要操作的引用数据类型不确定的时候.


为了让不同方法可以操作不同类型,而且类型还部确定

那么可以将泛型在方法上

特殊之处:

静态方法不可以访问类上定义的泛型.

如果静态方法操作的应用数据类型不确定.可以将泛型定义在方法上.

泛型的位置也有将就

Public static <QQ> getfanxing(){} 位置错了也会报错.

可以既有泛型类,也有泛型方法

 

泛型定义在方法上事例

package pack;import java.util.ArrayList;import java.util.Collection;public class Demo{	public static void main(String[] args) {			}		//泛型定义在方法上,返回值和参数都是泛型	public static <T> T show(ArrayList<T> al){				return null;	}		//泛型定义在方法上,	public static <T> void show(Collection<T> al){			}}

  

泛型定义在类上事例

package pack;import java.util.ArrayList;import java.util.Collection;public class Demo<T>{	T a;		}class Gen<T>{	T a;	public Gen(T obj){			}		public void Get(T t){			}		public T getObj(){		return null;	}}

  

 

泛型的限定:

 

? 通配符,也可理解为占位符

 

泛型的限定:

 

? extends E:可以接收E类型或者E的子类型.上限. 既能接收也能接收E的子类型 

 

?super E:可以接收E类型或者E的父类型.下限.

 

 

 

?	通配符,也可理解为占位符泛型的限定:
public static void printToll(ArrayList<?> al)    //泛型通配符.?{    Iterator<?> it = al.iterator();    while(it.hasNext())    {        System.out.println(it.next());    }}

 

 

 

java泛型