您的位置:首页 > 大数据

大数据系列修炼-Scala课程48

2016-09-25 10:29 344 查看
大数据系列修炼-Scala课程48

核心内容:

1、Scala类型约束代码实战及其在Spark中的应用源码解析

1、Scala类型约束的使用
1>在scala中,常见的两种类型约束:

A =:= B 含义:表示A类型等同于B类型

A <:< B 含义:表示A类型是B类型的子类 A <:< B从整体上可以理解A<:B,但是实际上A <:< B比A<:B更加严格,

因为编译器在编译级别就会进行类型判断。

2>=:=与 <:<这两个操作符实际上是类,而这两个类是在Predef中定义的。

3>在def rockyT(implicit m: T<:

package IT03

import java.io._

//本程序的目的是掌握Scala中类型约束代码实战及其在Spark中的应用源码解析
object App
{
def main(args:Array[String]):Unit=
{
//实例程序1:
def rocky[T](first:T)(implicit m: T<:<Serializable)
{
println("Life is short,you need spark!")
}
//从下面的实例可以看出String、Integer在底层实现了Serializable接口,但是Int没有
rocky[String]("Spark") //Life is short,you need spark!
//rocky[Int](100) //Life is short,you need spark!
}
}


实例程序2(<:):

object App
{
def main(args:Array[String]):Unit=
{
//实例程序1:
def rocky[T<:Serializable](first:T)
{
println("Life is short,you need spark!")
}
rocky[String]("Spark") //Life is short,you need spark!
rocky[Integer](100) //Life is short,you need spark!
}
}


实例程序3(<%):

object App
{
def main(args:Array[String]):Unit=
{
def rocky[T<%Serializable](first:T)
{
println("Life is short,you need spark!")
}
rocky[String]("Spark") //Life is short,you need spark!
rocky[Int](100) //Life is short,you need spark!
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: