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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值