自从上次参加完俱乐部的聚会后,觉的有必要总结下泛型的用法,虽然脑袋讲的 非常仔细,没有必要再写,但做为学习者,我喜欢把自己的所学以文章的形式展示出 来,这样也有我的一部分。我们可以用一个简单的例子来做实验:实例化一个 ArrayList和一个List<int>,然后往其中加入成员,最后分别读取出第一个 成员,进行一个加法操作。
ArrayList _list = new ArrayList(); _list.Add(1); _list.Add("a"); int i = (int)_list[0] + 1; List<int> _list2 = new List<int>(); _list2.Add(1);//正确 int j = (int)_list2[0] + 1;
ArrayList的缺点:
1:处理值类型时,出现装箱、折箱操作,影响性能。_list.Add(1)时会发生装 箱。
2:处理引用类型时,虽没有装箱和折箱操作,但仍需要类型转换操作。代码 _list.Add("a")不会发生装箱。
3:程序运行时的类型转换可能引发异常。运行_list[1]时,由于它是一个字符 串,要强制转换成int就会有异常。
泛型处理过程:泛型用一个通用的数据类型T来代替object,在类实例化时指 定T的类型,CLR自动编译为本地代码,并且保证数据类型安全。
泛型优点:
1:类型安全的。例如实例化了int类型的类,就不能处理string类型的数据。 上面的_list2.Add("a"),就会报错。
2:处理值类型时,无需装箱和折箱。int j=i+1;i可以直接取,并不需要折箱操 作。
3:无需类型转换,包含值类型和引用类型。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索list
, 数据类型
, 类型
, 装箱
, 处理
, 一个
泛型总结
java 泛型、c 泛型、java 泛型方法、java泛型详解、c 泛型编程,以便于您获取更多的相关知识。