Java学习笔记——泛型

泛型
Java中的泛型,只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法,也就是说,
泛型信息不会进入到运行时阶段

泛型的使用
泛型类
不指定泛型相当于指定了一个Object类
同一个类,但是在new对象时泛型指定的不同数据类型,这些对象不能相互赋值

		List list = new ArrayList();
		list.add(111);
		list.add("aa");
		list.add(true);
		//需求,只能在集合中存字符串
		List<String> l=new ArrayList<String>();
		l.add("abc");
//		l.add(true);  这个是在编译期发现的问题
		
		A<String> a1=new A<String>(); //在new A的对象的时候指定泛型的类型为String
		a1.setKey("str");  //对象使用setKey(T key)时候,中的key形参就是String
		System.out.println(a1.getKey());//返回值就有new对象确定返回值是String
		
		
		A<Integer> a2=new A<Integer>();
		a2.setKey(123);
		System.out.println(a2.getKey());
		
		A a3=new A(); //不指定泛型相当于指定了一个Object类型
//		A<Object> a3=new A<Object>();
		a3.setKey(new Object());
		Object obj=a3.getKey();
泛型接口
 public class Test1 {
	public static void main(String[] args) {
		B1<String> b1=new B1<String>();
		B1<Object> b2=new B1<Object>();
		
		B2 b3=new B2();//不用指定泛型 
	}
}
 interface IB<T>{
	 T test(T t);
 }
 
 /**
  * 未传入泛型实参时,与泛型类的定义相同,在声明类的时候,需要将泛型的声明也一起加到类中  
  * @author zym
  *
  * @param <T>
  */
 class B1<T> implements IB<T>{

	@Override
	public T test(T t) {
		return t;
	}
	 
 }

 /**
  * 如果实现接口时指定接口的泛型的具体数据类型
  * 这个类实现接口所有方法的位置都要泛型替换实际的具体数据类型
  * @author zym
  *
  */
 class B2 implements IB<String>{

	@Override
	public String test(String t) {
		return null;
	}
	 
 }

3.泛型方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值