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());
    }
}

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。