暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

每日一课:类型别名

Scala学习 2016-02-29
662

类型别名指的是给类型取个另外的名字,在程序其它地方使用到这个类型时便可以用这个别名来替代,代码示例


//使用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等大数据技术干货及相关技术资讯

技术永无止境,勇攀高峰,一往直前!



觉得文章不错?扫描关注


文章转载自Scala学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论