隐式转换执行过程分析
概念
Java 有很庞大的类库资源,但是 被声明成 final 的类不允许继承 例如 String , 怎样扩展java及第三方类库 Scala提供了很灵活的方式
当 scala 使用 implicit 隐式转化时 , scala 编辑器发现对象的类型不匹配时,不会直接报错,而会在代码中尝试匹配implicit声明的object, 当然,相同方法签名的类必须唯一。
举个小例子,实现在字符串前后 添加 “**” 的操作。如:
|
|
代码的执行过程如下:
- 调用File 的read 方法
- 当编译器发现File类没有read 方法时,不是直接报错,而是执行第三步
- 检查当前作用域中是否有接受File的 implicit 方法,如没有直接报错,如有,执行第4步
- 将File作为参数实例化RichFile,再检查是否有read 方法,如没有直接报错
- 执行read方法
整个执行过程中,需要特别注意的是, 作用域