第66讲scala 中伴生对象的隐式转换

信息来源于 DT大数据梦工厂微信公众号:DT_Spark

代码如下:

/** * 伴生对象 中的隐式方法 * Created by zhiwang on 2015/7/24. */

import java.io.File
import scala.io.Source

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

class File_Implicit2(path:String) extends File(path)

object File_Implicit2{
   implicit  def file2RichFile(file:File) = new RichFile2(file)  // file => RichFile2
}

object Implicits_Internals {
  def main(args: Array[String]) {
     println(new File_Implicit2("I:\\aa.txt").read )
  }
}

过程解析

当 new File_Implicit2 对象 执行read 过程中,并没有import 导入隐式转换相关方法,而是 通过 File_Implicit2 的伴生对象来完成。

当代码改为如下语句时:

object File_Implicit3{
  implicit  def file2RichFile(file:File) = new RichFile2(file)  // file => RichFile2
}

object Implicits_Internals {
  def main(args: Array[String]) {
    import  File_Implicit3._
     println(new File_Implicit2("I:\\aa.txt").read )
  }
}

代码执行的 不是伴生对象File_Implicit2 中的隐式转换,而是 File_Implicit3 中的。

参考资料
DT大数据微信公众账号:DT_Spark

你可能感兴趣的:(scala)