类型别名指的是给类型取个另外的名字,在程序其它地方使用到这个类型时便可以用这个别名来替代,代码示例
//使用type关键字给类型取别名
scala> type JavaHashMap=java.util.HashMap[String,String]
defined type alias JavaHashMap
//使用别名创建HashMap对象
scala> val map=new JavaHashMap
map: java.util.HashMap[String,String] = {}
scala> map.put("Scala","2.10.4")
res1: String = null
scala> map
res2: java.util.HashMap[String,String] = {Scala=2.10.4}
代码typeJavaHashMap=java.util.HashMap[String,String]使用type关键字给java.util.HashMap[String,String]取了个别名JavaHashMap。当在程序中需要使用java.util.HashMap[String,String]时直接用JavaHashMap这个别名即可,如代码val map=new JavaHashMap创建的便是java.util.HashMap[String,String]类型的HashMap。可以看到,类型别名可以简化程序设计,使代码更简洁。细心的读者会发现,类型别名与import java.util.{HashMap=>JavaHashMap}重命名作用类似,虽然如此但它们两者之前还是有区别的,代码如下:
//引入重命名不能带具体泛型参数类型
scala> importjava.util.{HashMap[String,String]=>JavaHashMap}
<console>:1: error: '}'expected but '[' found.
importjava.util.{HashMap[String,String]=>JavaHashMap}
^
scala> import java.util.{HashMap=>JavaHashMap}
import java.util.{HashMap=>JavaHashMap}
//类型别名必须指定具体泛型参数类型
scala> type JavaHashMap=java.util.HashMap
<console>:8: error: class HashMap takes type parameters
typeJavaHashMap=java.util.HashMap
^
scala> type JavaHashMap=java.util.HashMap[String,String]
defined type alias JavaHashMap
通过上述代码可以看到,类型别名在使用时如果类具有泛型参数则必须指定具体泛型类型,而引入重命名在使用时不能指定类具体的泛型类型。
Scala学习(公众微信号:ScalaLearning)每天为大家带来一点Scala语言、Spark、Kafka、Flink、AKKA等大数据技术干货及相关技术资讯
技术永无止境,勇攀高峰,一往直前!
觉得文章不错?扫描关注





