Android 泛型★★★★★

1.泛型
泛型就相当于标签,形式是:<>。
当集合容器类在设计/声明阶段不能确定这个容器到底实例存的是什么类型的对象时,在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,此时把元素的类型设计成一个参数,这个类型参数叫做泛型。
Collection< E>,List< E>,ArrayList< E>,这个E就是类型参数,即泛型。

2.泛型的引入
在泛型出现之前,List是这样使用的:
public static void add(){
List list = new ArrayList();
list.add(“a”);
list.add(“b”);
list.add(1);//1自动装箱成对象
}
List集合中存储了String和Integer二种类型,在存储时发现没啥问题,但是存储数据肯定是要拿出来使用的,如果对这个集合进行遍历:
Iterator iterator = list.iterator();
while (iterator.hasNext()){
Object obj = iterator.next();
Log.e(TAG,“obj=”+obj);
}
获取集合中的每个元素返回的是Object,如果这个时候想对获取的元素进行操作,比如截取等,会发现最后一个从集合中获取的元素是1,那怎么对字符串进行截取等操作啊,这时候就得要对obj进行类型操作:
if(obj instanceof String){
//截取字符串操作
}
这样每次都要去判断类型,然后做下面的操作,如果obj是String类型,那么obj就要强转成String,如果obj不是String类型,那么强转会造成错误,程序可能直接挂了,这就是为啥出现泛型。因为泛型是出现在编译时期,会避免在运行时候程序因为强转导致程序崩溃。
现在使用泛型对上例代码进行修改:
public static void add(){
List< String> list = new ArrayList< String>();
list.add(“a”);
list.add(“b”);
// list.add(1);会报错
}
会发现集合中存储的是String类型,你存储一个integer进去,编译器就报错了,这就是使用泛型的好处之一。因为把这个List的泛型定义为String类型,相当于给这个List贴了一个String的标签,只有Strinf类型的数据才可以放进去,其他类型放进去就会报错。这样在编译时期就会对类型进行检查,不是泛型对应的类型就不可以添加进这个集合。
所以泛型出现的好处有二点:
①遍历时,避免了强转
②把运行时期改成了在编译时期检查语法

总结一下:
①泛型是在JDK1.5以后才出现的
②泛型其实就是一个<>引起来的参数类型,这个参数类型在使用的时候才会确定具体是哪个类型
③泛型的类型都是引用数据类型,不能是基本数据类型
④List< String> list = new Array

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值