1 package big.data.analyse.scala 2 3 import java.io.File 4 5 import scala.io.Source 6 7 /** 8 * 隐式转换 9 * Created by zhen on 2019/1/6. 10 */ 11 class RichFile(val file:File){ 12 def read = Source.fromFile(file.getPath()).mkString 13 } 14 object Context{ 15 implicit def file2RichFile(file:File) = new RichFile(file) 16 } 17 object ImplicitConversion { 18 def main(args: Array[String]) { 19 //导入隐式转换 20 import Context.file2RichFile 21 println(new File("C:/Users/zhen/.spyder-py3/发布模块/setup.py").read) 22 } 23 }
解析:
一个从类型S到类型T的隐式转换由一个函数类型 S => T的隐式值来定义,或者由一个可转化成所需值的隐式方法来定义。
隐式转换一般在下面两种情况下使用:
1.如果表达式e的类型为S,并且类型S不符合表达式的期望类型T。
2.在一个类型为S的实例对象e中调用e.show,如果被调用的show并没有在类型S中声明。
结果: