更新时间:2019-12-13 11:54:47 来源:极悦 浏览2363次
System.Collections.Generic命名空间包含了范型集合需要的类和接口;
我们在写程序的时候, 经常需要这种东西: 可变长度的Array, 比如说一个string[]
而事实上定义了一个string[]并初始化后那么它的长度就固定了, Array根本做不到. 如果非要实现这种功能,那唯一合理的办法只有定义一个ArrayList, 这个类似于vector类型的东西可以实现可变长度的Array, 但是带来几个问题:
1. ArrayList里面操作的都是object类型, 这意味着如果我放一个string进去, 再当作int取出来, 这在编译阶段是不会出错的, 而在运行时才会提示转换无效
2. 以object方式存储时, 需要装箱和拆箱操作, 这些步骤会带来额外的性能消耗 - 而没法做到普通Array那样直接
3. 如果要避免前两个问题, 那么所有的需要强类型的集合类都需要分别定义, 比如XxxxCollection, 非常麻烦
解决办法:
Collection strCollection = new Collection();
strCollection.Add("a");strCollection.Add("b");.....
这样strCollection就是我们需要的集合. 范型使Add/Remove等操作全部都是类型安全的,以索引器访问时也是类型安全的, 这在编译阶段(对于VS来说可以包括编写代码的阶段)就可以反映出来.
而性能方面, 这里根本就没有装箱/拆箱的操作, 所以比原有ArrayList方式性能更高. 也没有像以前那样声明一个StringCollection之类的class, 代码上也简洁的多.
范型的特点
增加了编译时的类型检查;
减少了装箱和拆箱操作;
减少了运行时的类型检查;
Cast;
以上就是极悦注册机构小编介绍的“极悦注册教程:什么是泛型Java”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
相关文章
0基础 0学费 15天面授
有基础 直达就业
业余时间 高薪转行
工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习