晚上和大家分享了关于架构的一些东西,多次提到Java,脑子里突然想起了关于泛型的一些记忆。
泛型是程序设计语言的一种特性,主要是引入了类型参数这个概念。它是将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。它允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。
泛型的定义主要有以下两种:
- 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)
- 在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(人们大多把这称作模板)
我学习Java的时候,JDK 1.4是主流版本,Java还没有泛型这个特性,当然,也没听说过泛型这个词,更加没有感觉到它的必要性。J2SE 5.0 (1.5.0) Tiger 发布于 2004年10月,才从此Java才有了泛型。
但可能就是因为这个东西,让我对Java产生了审美上的反感,同时也产生了一些由于思维方式改变带来的不安全感,放弃了主攻Java的念头。
各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Java中的泛型基本上是在编译器这个层次来实现的。Java在编译期间,所有的泛型信息都会被擦除,比如List和List类型,在编译后都会变成List类型(原始类型)。这也是Java的泛型被称为“伪泛型”的原因。
PHP里没有泛型,不过Hack里是有的。讲真,Hack的语言特性设计的非常不错。