理论教育 Scala语言开发实战:泛型详解及超越Java的几方面

Scala语言开发实战:泛型详解及超越Java的几方面

时间:2023-11-24 理论教育 版权反馈
【摘要】:Java泛型是Java 5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。Java为了保证向后兼容性,导致在某些方面存在不足,而Scala则没有这些包袱,因此Scala在泛型上走得更远,超越了Java,具体体现在以下几个方面:首先是Arrays。在Scala中,类、特质及函数都可以带类型参数,类型参数使用方括号来定义,对应参考泛型在Scala类库中的定义如下:

Scala语言开发实战:泛型详解及超越Java的几方面

Java泛型是Java 5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。

和Java 5一样,Scala也内置支持类型的参数化,为了基于JVM运行,Scala也采用了Java的泛型擦除模式(erasure),即类型是编译期的,在运行时会被“擦拭”掉,也就是运行时看不到类型参数。

Java为了保证向后兼容性,导致在某些方面存在不足,而Scala则没有这些包袱,因此Scala在泛型上走得更远,超越了Java,具体体现在以下几个方面(在此引用Scala创始人Martin Odersky对Scala泛型这方面的描述):

首先是Arrays。Scala中的Array可以取泛型参数(parameterized types)及类型变量(type variables)来做其元素的类型。

第二,对基本类型(primitive types)的支持。(www.daowen.com)

第三,声明地点可变性(declaration site variance)。

第四,对于上下界的支持(lower bound&upper bound),以及将多个上界(multiple upper bonds)作为复合类型(compound type)模式的支持。

在Scala中,类、特质及函数都可以带类型参数,类型参数使用方括号来定义,对应参考泛型在Scala类库中的定义如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈