[泛型的概念] (1)没有泛型的时候,所有的对象都是以object为基础,如果要使用时必须进行强制类型转换,如果对于值类型,则会导致不断拆箱装箱的过程,对系统消耗很大。 (2)使用泛型时不需要通过object类进行装箱拆箱,使用的时候都会是确定的类型。 (3)泛型的概念一开始是由集合引入,因为集合中的类型都是基于object类。可以在集合中使用泛型类。 (4)泛型不仅仅用于集合,还可以用于委托、接口和方法。 泛型的优点:高性能 ArrayList list1 = new ArrayList(); list1.Add(44); //装箱 int il1 = (int)list1[0];//拆箱 foreach (int i2 in list1) Console.WriteLine(i2); //执行拆箱
频繁的拆箱、装箱操作在没有泛型的时候反复进行,对系统资源消耗很大。可以使用泛型集合。
List list2 = new List(); list2.Add(44); //不执行装箱 int il2 = list2[0];//不执行拆箱 foreach (int i2 in list2) Console.WriteLine(i2); //不执行拆箱
泛型在定义的时候就区分了值类型和引用类型。
泛型的优点:类型安全 ArrayList list = new ArrayList(); list.Add(44); list.Add("mystring"); list.Add(new MyClass()); foreach (int i in list) Console.WriteLine(i);
类型安全在于提前避免异常的出现。
List list2 = new List(); list2.Add(44); //list2.Add("mystring"); //list2.Add(new MyClass()); 直接编译不通过。
泛型的优点:代码的重用与扩展 List这个泛型类在使用时可以根据需要用不同的类型实例化:
List list=new List(); list.Add(44);
List stringList=new List(); stringList.Add(“mystring”);
List myclassList=new List(); myClassList.Add(new MyClass());
泛型的优点:代码的重用与扩展
定义一个泛型类: public class aaa 注意:这里的T只是一个标识而已,定义成任何字符都可以。 { public void abc(T a) { Console.WriteLine(a); } }
使用它: //使用string实例化 aaa aaa = new aaa(); aaa.abc("aaabbb"); //使用int实例化 aaa
Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a generic array of T,初学泛型时,看到这个错就以为Java中不能创建泛型数组,随着不断的深入,当看到Tinking in J...