泛型使用

一、泛型的概述
泛型的格式:
<具体的数据类型>
使用格式:
ArrayList<限定集合中的数据类型>  list = new  ArrayList<限定集合中的数据类型>();
说明:给集合加泛型,就是让集合中只能保存具体的某一种数据类型。
 
说明:由于创建ArrayList集合的时候就已经限定集合中只能保存String类型的数据,所以编译的时候保存其他的数据类型就会报错,
这样就达到了我们上述保存数据的目的了。
二、泛型的好处

  • 将运行时期的ClassCastException,转移到了编译时期变成了编译失败。
  • 避免了类型强转的麻烦。

 

[Java]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
public class GenericDemo2 {
     public static void main(String[] args) {
         Collection<String> list = new ArrayList<String>();
         list.add( "abc" );
         list.add( "itcast" );
         // list.add(5);//当集合明确类型后,存放类型不一致就会编译报错
         // 集合已经明确具体存放的元素类型,那么在使用迭代器的时候,迭代器也同样会知道具体遍历元素类型
         Iterator<String> it = list.iterator();
         while (it.hasNext()){
             String str = it.next();
             //当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型
             System.out.println(str.length());
         }
     }
}


注意:泛型是数据类型的一部分,我们将类名与泛型合并一起看做数据类型。
三、泛型的注意事项

  • 泛型只支持引用数据类型(类类型或接口类型等),泛型不支持基本数据类型:

ArrayList<int> list = new ArrayList<int>();//错误的

  • 泛型不支持数据类型以继承的形式存在,要求前后泛型的数据类型必须一致:


ArrayList<Object> list = new ArrayList<String>();//错误的

  • 在jdk1.7之后,泛型也可以支持如下写法:


ArrayList<String> list = new ArrayList<>();//正确的
注意:现在的开发中,泛型已经成为编写代码的规范
四、自定义泛型
在集合中,不管是接口还是类,它们在定义的时候类或接口名的后面都使用<标识符>,当我们在使用的时候,可以指定其中的类型。
如果当前的类或接口中并没有<标识符>,我们在使用的时候也不能去指定类型。
举例:比如我们之前所学习的集合ArrayList类:
new ArrayList<E>
说明:在ArrayList类上有一个泛型的参数:E 

  • 泛型自定义格式:


<标识符>
这里的标识符可以是任意的字母、数字、下划线和 $ 。但是这里一般规范使用单个大写字母。
五、受限泛型
设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置。但是在JAVA的泛型中可以指定一个泛型的上限下限
泛型的上限

  • 格式: 类型名称 <? extends 类 > 对象名称


例如:? extends Person :?代表的是一种类型,当前这个类型可以是Person本身,也可以是Person的子类。

  • 意义: 只能接收该类型及其子类


泛型的下限

  • 格式: 类型名称 <? super 类 > 对象名称


例如: ? super Student :?代表当前的类型可以是Student类型,也可以是Student的父类类型。

  • 意义: 只能接收该类型及其父类型


更多Java学习资料可关注:gzitcast

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值