scala教程:隐式转换介绍(implicit)

介绍

可以在 不改源代码 的情况下,增加某个类的功能

这个特性是 java 等高级开发语言没有的,而且很重要,很多 scala开发的软件都大量使用隐式转换,如:spark、flink、akka等

实现方式

有2种方式实现隐式转换:

  • 隐式函数(scala 2.10版之前)
  • 隐式类(scala 2.10版之后增加的方法)

应用场景

  • 将某一类型转换成另一类型
  • 类型增强与扩展
  • 模拟新的语法

什么时候要进行隐式转换?

  1. 当对象调用类中 不存在 的 方法 或 属性 时,编译器会自动将对象进行隐式转换
  2. 当方法中的参数类型与目标类型不一致时

隐式转换的限制:

  1. implicit 关键字只能用来 修饰 方法、变量、参数、类
  2. 隐式转换的方法在 当前范围内 才有效,如果隐式转换 不在当前范围内 定义(比如定义在了另一个类中或者包含在某个对象中),就必须通过 import语句导入

隐式转换使用方式:

  1. 将方法或变量标记为 implicit
  2. 将方法的参数列表标记为 implicit
  3. 将类标记为 implicit

原文出处:/show_1IX1KpZTU9u9.html