博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第25条:列表优先于数组
阅读量:6933 次
发布时间:2019-06-27

本文共 1013 字,大约阅读时间需要 3 分钟。

数组与泛型相比,有两个重要的不同点。数组是协变的(如果Sub是Super的子类型,那么数组类型Sub[]是Super[]的子类型),相反,泛型是不可变得,对于任意两个不同的类型T1和T2,List<T1>和List<T2>没有子类型或超类型的关系。

 

//这段代码在运行时出错Object[] o = new Long[1];o[0] = "I don't fit it";//这段代码在编译时出错List o = new ArrayList
();o.add("I don't fit it";

 

一段代码:

static 
E reduce(List
list, Function
f, E initVal) { E[] snapshot = (E()) list.toArray(); E result = initVal; for(E e : snapshot) result = f.apply(result, e);   return result;}

会有一条警告,编译器无法再编译时知道E是什么,所以是一个非受检的警告。

 

修改成列表代替数组:

static 
E reduce(List
list, Function
f, E initVal) { List
snapshot; synchronized(list) { snapshot = new ArrayList
(list); } E result = initVal; for(E e : snapshot) result = f.apply(result, e); return result; }

这样不会再收到警告,因为编译器可以保证类型转换自动进行,不会出错。

转载于:https://www.cnblogs.com/13jhzeng/p/5719029.html

你可能感兴趣的文章
消息总线VS消息队列
查看>>
Eclipse SDK构建J2EE开发环境
查看>>
入门基础
查看>>
object dection资源
查看>>
Swift标识符和keyword
查看>>
【树莓派】【转载】基于树莓派,制作家庭媒体中心+下载机
查看>>
spring中InitializingBean接口使用理解
查看>>
strncmp函数——比较特定长度的字符串
查看>>
EF使用Fluent API配置映射关系
查看>>
输入页制作笔记
查看>>
C#使用xpath简单爬取网站的内容
查看>>
Id选择器和Class选择器
查看>>
人本质要好,要善良,要真诚,有格局和胸怀,有能力,有眼光,能讲故事,能找到人,能搞到钱...
查看>>
linux 磁盘性能监控
查看>>
CreateJs入门必知必会
查看>>
Spark Scala语言学习系列之完成HelloWorld程序(三种方式)
查看>>
SDL2源代码分析8:视频显示总结
查看>>
JavaScript中Object的总结
查看>>
WinDbg配置和使用基础
查看>>
自制力和拖延症
查看>>