您的位置:首页 > 其它

隐式转换的一点想法

2016-02-29 18:03 267 查看
object App {
implicit def toM2(m1:M1): M2 ={
println("m1 to m2")
new M2()
}
class M1 {
def method1(): Unit ={
println("invoke method 1")
}
}

class M2() {
def method2(): Unit ={
println("invoke method 2")
}
}
def main(args: Array[String]) {

val m1 = new M1
//m1本身有method1的方法,一次不需要调用隐式转换
//输出  println("invoke method 1")
m1.method1()

//m1不存在method2 方法,需要在作用域中寻找隐式转换,正好发现有一个能把m1转换成m2,恰好m2有method方法,那么先执行转换方法,再执行method2
//输出  println("m1 to m2") println("invoke method 2")
m1.method2()

//m1本身有method1的方法,一次不需要调用隐式转换
//输出  println("invoke method 1")
m1.method1()

//m1不存在method2 方法,需要在作用域中寻找隐式转换,正好发现有一个能把m1转换成m2,恰好m2有method2方法,那么先执行转换方法,再执行method2
//输出  println("m1 to m2") println("invoke method 2")
//需要注意的是,这次又执行了转换方法,这意味着每次执行的独立性.
m1.method2()

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: