您的位置:首页 > 其它

scala进阶19-隐式转换内幕

2016-08-19 01:00 288 查看
import scala.io.Source
import java.io.File

class RicherFile(val file: File) {
def read = Source.fromFile(file.getPath).mkString
}

class MyFile(path: String) extends File(path)
object MyFile {
implicit def file2RicherFile(file: File) = new RicherFile(file)
}

object Implicits_Internals extends App {
/**
* 1、new MyFile("/tmp/test.txt")构造一个MyFile对象
* 2、调用MyFile对象中的read方法,发现MyFile对象中没有read方法
* 3、但是上下文中也没有隐式类的导入
* 4、那么编译器查找MyFile伴生对象中有没有隐式转换,发现有
* 5、编译器开始尝试类型匹配,发现隐式函数中有对File的隐式转换
* 6、讲MyFile对象转换成RicherFile对象,即可调用read
*/
println(new MyFile("/tmp/test.txt").read)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐