- 分类(隐式值、隐式函数、隐式类)
- 隐式转化主要解决两种类型之间的转化,进而实现拓展开放、修改封闭,有点类似装饰器
- 关键语法:implicit
package com.abc
// 隐式转换
object ImplicitDemo {
def main(args: Array[String]): Unit = {
// 1、隐式值(使用隐式值不能使用fun1()调用)
implicit val a1:String = "隐式值"
fun1
// 2、隐式函数
val i:Int = 1.5F
println(s"隐式函数:$i")
// 3、隐式类(不能是顶级类,既只能包含在object或者class里面)
implicit class I(arg:A){
def b(): Unit ={
println("A隐式类,增强类A的功能")
}
}
val a:A = new A
a.b()
}
def fun1(implicit s:String): Unit ={
println(s)
}
//隐式函数
implicit def fun2(f:Float):Int={
f.toInt
}
}
class A(){
}
- 运行结果
隐式值
隐式函数:1
A隐式类,增强类A的功能