java泛型

使用泛型时,如果两边都用到泛型,两边必须要一样。例如:

ArrayList<String> list = new ArrayList<String>();

不能

ArrayList<Object> list = new ArrayList<String>();

ArrayList<String> list = new ArrayList<Object>();

泛型类型必须要用引用类型,不能是基本数据类型。

 

以下这些是可以的(sun这样设计是为了兼容):

ArrayList<String> list = new ArrayList();

ArrayList list = new ArrayList<String> ();

 

Java泛型是提供给javac编译器使用的,他用于限定集合的输入类型,让编译器在编译前能检查集合中的非法数据。在编译成class文件后,泛型将会被擦除,以做到不影响程序运行效率。总之,泛型的引入是为了将运行时的错误提前到编译前提醒。

 

自定义带泛型方法:

泛型要先声明,再使用

package com.summer.day1;

/**
 * <T,K,M>在类上声明泛型
 * 他对类中的静态方法不起作用,类中的静态方法需要在方法上声明类型
 * @author Mark Summer
 *
 * @param <T>
 * @param <K>
 * @param <M>
 */
public class Main<T,K,M> {

	/**
	 * <T>这是泛型在方法上的声明
	 * @param t
	 */
	public <T> void method1(T t){
		
	}
	//多个泛型的声明
	public <T,K> void method2(T t,K k){
		
	}
	//类上已经声明了泛型
	public  void method3(T t){
		
	}
	

}


如果一个类中多出用到同一泛型,这时可以吧泛型定义到类上。

类中的静态方法无法使用类定义的泛型,而应在静态方法上单独定义泛型。

 

package com.summer.day1;

public class Generic<T> {
	private T field;
	
	public  T getField(){
		return field;
	}
	
	public void setField(T t){
		
	}
	
	public static <T> void util(T t){
		
	}


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值