JDK1.5新特性之泛型

本文深入解析了泛型的概念,包括其在类和方法上的应用,泛型的上边界,以及泛型擦除等核心内容,帮助读者理解如何正确使用泛型以提高代码的灵活性和复用性。

泛型:

一种参数化的类型

  • //非泛型,不是参数化类型

ArrayList list0 = new ArrayList();

list0.add("abc");

list0.add(10);

  • //泛型标准做法,参数化类型   参数是String类型

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

list1.add("abc");

list1.add("def");

  • //泛型,不推荐,非标准做法

ArrayList list2 = new ArrayList<String>();

list2.add("abc");

list2.add("def");

list2.add(10);

new Demo1().xxx(list2)

  • //泛型,但不推荐

ArrayList<String> list3 = new Demo1().yyy();

list3.add("abc");

list3.add("def");

  • //下列的做法是错误的做法,编译报错,两边泛型必须一致

//ArrayList<Object> list4 = new ArrayList<String>();

自定义泛型

  -类上的泛型,泛型类

泛型一定要先定义,后使用,在类的名字后面定义泛型的类型一定要引用

数据类型,不能是基本数据类型不能对确切的泛型类型使用instanceof关键字

比如:

//此种写法语法报错

if(num instanceof Generic<Number>){

}

定义在类上,在类的内部起作用,在整个类的范围内类型一致类上的泛型的具体类型需要在创建类的对象的时候指定泛型的具体类型

如果在使用类上的泛型时不指定泛型的具体类型,默认的具体的类型为泛型 的上边界

 

  -方法上的泛型,泛型方法

泛型要先定义,后使用.在返回值之前定义通常用一个大写的字母来定义一个泛型,可以定义多个,且定义在方法上,在方法的

内部起作用,方法上的泛型,在方法被调用的时候自动推断出具体的泛型,无论何时,尽量使用泛型方法,因为作用域小,只局限

于方法

比如:

public<T> T save(T t){

return t;

}

<T>就是标志,标志此方法是一个泛型方法,放在修饰符合返回类型之间可以放

置多个符号<T,E>,说明有两个类型需要参数化确定

 

泛型的上边界:

泛型所取的类型是上边界类或上边界类型的子孙类型

如果不指定泛型默认上边界是Object

 

泛型擦除:

  泛型在编译期间起作用,真正执行期间,泛型已经被擦除了.在编译阶段,编译器会将所有使用泛型的地方

替换为该泛型的上边界,并在必要的时候增加上必须的类型强制转换和类型检查,所以在执行期间没有泛型的概念

泛型在编译期间就被擦出掉了,此过程就叫做泛型擦除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值