您的位置:首页 > 其它

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

2015-07-24 22:39 417 查看
信息来源于 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: