创建ImplicitDemo
package nj
/**
* @author WGY
*/
class ImplicitDemo
object ImplicitDemo {
def sum(a:Int,b:Int):Int={
a+b
}
def sum2(a:Int)(implicit b:Int):Int={
a+b
}
def main(args: Array[String]): Unit = {
//导包,可以调用包中的方法
import nj.Impliciteg._
println(sum(2,3),sum2(2))
//去包中寻找隐式方法自动转换
val a:Int = 3.5
val str:String=2.4
val b:String=2
println(a,str,b)
val implicitDemo=new ImplicitDemo
val i1 = implicitDemo.shang(2,1)
val i2 = implicitDemo.ji(2,4)
println(i1,i2)
val i3 = implicitDemo.cha(4,2)
println(i3)
}
}
方法类Impliciteg
package nj
/**
* @author WGY
*/
object Impliciteg {
implicit val num1:Int=10
//只认类型与方法名无关
implicit def double2Double(obj:Double):Int=obj.toInt+5
implicit def double2String(obj:Double):String=obj.toString
implicit def String2Int(obj:Int):String=obj.toString
implicit class JiAndShang(obj:ImplicitDemo){
def ji(num:Int,num2:Int):Int={
num*num2
}
def shang(num:Int,num2:Int):Int={
num/num2
}
}
implicit class Cha(obj:ImplicitDemo){
def cha(num:Int,num2:Int):Int={
num-num2
}
}
}
ImplicitDemo的输出结果为