package com.dt.spark.scala.bascis
/**
*使用implicit可以是所在类在执行没有的方法时检查下自己或者子类中是否存在该方法,如果存在则不会报错
/**
*使用implicit可以是所在类在执行没有的方法时检查下自己或者子类中是否存在该方法,如果存在则不会报错
*1.在object中隐式转换
*2.使用implicit 进行的隐式转换
*/
class Man (val name:String)
/* 第一种方式
* object Man {
implicit def man2SuperMan(man:Man) = new SuperMan(man.name)
}*/
class SuperMan(val name:String){
def makeMiracles= println(this.name +" wow wow , i am superman")
}
object IMFimplicits {
//第二种方式
implicit def man2SuperMan(man:Man) = new SuperMan(man.name)
}
object HelloImplicits {
def main(args: Array[String]): Unit = {
import com.dt.spark.scala.bascis.myimplicits._
val man =new Man("scla")
man.makeMiracles
//做默认配置
implicit val content = "ScaLa"
// talk("java")("money")
talk("java")
talk("java")("spark")
}
def talk(name:String)(implicit content :String) = println(name+ " : "+content)
}
打印结果:
scla wow wow , i am superman
java : ScaLa
java : spark
*/
class Man (val name:String)
/* 第一种方式
* object Man {
implicit def man2SuperMan(man:Man) = new SuperMan(man.name)
}*/
class SuperMan(val name:String){
def makeMiracles= println(this.name +" wow wow , i am superman")
}
object IMFimplicits {
//第二种方式
implicit def man2SuperMan(man:Man) = new SuperMan(man.name)
}
object HelloImplicits {
def main(args: Array[String]): Unit = {
import com.dt.spark.scala.bascis.myimplicits._
val man =new Man("scla")
man.makeMiracles
//做默认配置
implicit val content = "ScaLa"
// talk("java")("money")
talk("java")
talk("java")("spark")
}
def talk(name:String)(implicit content :String) = println(name+ " : "+content)
}
打印结果:
scla wow wow , i am superman
java : ScaLa
java : spark
spark源码鉴赏: