介绍
可以在 不改源代码 的情况下,增加某个类的功能
这个特性是 java 等高级开发语言没有的,而且很重要,很多 scala开发的软件都大量使用隐式转换,如:spark、flink、akka等
实现方式
有2种方式实现隐式转换:
- 隐式函数(scala 2.10版之前)
- 隐式类(scala 2.10版之后增加的方法)
应用场景
- 将某一类型转换成另一类型
- 类型增强与扩展
- 模拟新的语法
什么时候要进行隐式转换?
- 当对象调用类中 不存在 的 方法 或 属性 时,编译器会自动将对象进行隐式转换
- 当方法中的参数类型与目标类型不一致时
隐式转换的限制:
implicit关键字只能用来 修饰 方法、变量、参数、类- 隐式转换的方法在 当前范围内 才有效,如果隐式转换 不在当前范围内 定义(比如定义在了另一个类中或者包含在某个对象中),就必须通过 import语句导入
隐式转换使用方式:
- 将方法或变量标记为
implicit - 将方法的参数列表标记为
implicit - 将类标记为
implicit