java中的泛型

在说泛型之前我们先看下面这个例子
public class Test1 {
public static void main(String[] args) {
List list=new ArrayList();
list.add(“刘备”);
list.add(“关羽”);
list.add(3);
Iterator it = list.iterator();
while(it.hasNext()){
String next = (String)it.next();
System.out.println(next);
}
}
}
当运行时,程序会出错
Exception in thread “main” java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at Test1.main(Test1.java:14)
该错误是因为Integer类型不能转化为String类型,因为集合的add方法接收的是Object类型,取出时也是Object类型。所以当我们加入了一个Integer类型后,那么取出时强转成String类型就会报错。
为了解决这一问题,那就是在编译的时候就进行类型检查,我们引入了泛型这一个概念,泛型就是参数化类型,就是指定集合元素的类型。
改进后的程序如下
public class Test1 {
public static void main(String[] args) {
List list=new ArrayList();
list.add(“刘备”);
list.add(“关羽”);
list.add(3);
Iterator it = list.iterator();
while(it.hasNext()){
String next = (String)it.next();
System.out.println(next);
}
}
}
当给集合指定String类型后,在加入Integer时就会报错。
2.泛型的好处
1)将运行期才会出现的问题转移到了编译期。
2)避免了强制类型转换的麻烦。
3.泛型中<>在什么时候用?
就是当你不知道在使用时会使用哪种数据类型时,用<>来定义,当使用时把实际的数据类型传人即可,泛型中的<>类似方法中的实际参数和形式参数。
4.泛型的擦除
泛型是给编译器使用的技术,用于编译时期,确保类型的安全,而在运行时会将泛型去掉,编译后的class文件是不带泛型的。
5.自定义泛型:泛型可以用在类,接口和方法中使用,这样可以在使用时,在传人自己要使用的类型,提高代码的复用性,
6.通配符的符号时? 当泛型使用<?>时.它的类型可以匹配任何
类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值