来自 lxwde @ csdn 的 [翻译]C#、Java以及C++的泛型
附片段,可以琢磨含金量了。
Bruce Eckel: 能否就泛型做一个简短的介绍?
Anders Hejlsberg: 泛型的本质就是让你的类型能够拥有类型参数。
它们也被称为参数化类型(parameterized types)或者参数的多态(parametric polymorphism)。
经典的例子就是一个List集合类。List是一个方便易用的、可增长的数组。它有一个排序方法,你可以通过索引来引用它的元素,等等。
现今,如果没有参数化类型,在使用数组或者Lists之间就会有些别扭的地方。
如果使用数组,你得到了强类型保证,因为你可以定义一个关于Customer的数组,但是你没有可增长性和那些方便易用的方法。
如果你用的是List,虽然你得到了所有这些方便,但是却丧失了强类型保证。
你不能指定一个List是关于什么的List。它只是一个关于Object的List。
这会给你带来一些问题。类型检测必须在运行时刻做,也就意味着没有在编译时刻对类型进行检测。
即便是你塞给List一个Customer对象然后试图取出一个String,编译器也不会有丝毫的抱怨。
直到运行时刻你才会发现他会出问题。另外,当把基元类型(primitive type)放入List的时候,还必须对它们进行装箱(box)。
基于上述所有这些问题,Lists与Arrays之间的这种不和谐的地方总是存在的。到底选择哪个,会让你一直犹豫不决。
