1.隐式值
object ScalaDemo {
implicit val str : String = "刘明"
def main(args: Array[String]): Unit = {
//匹配隐式值时,不加括号
show
}
def show(implicit name:String)={
print("name: " + name)
}
}
2.隐式方法
object ScalaDemo {
def main(args: Array[String]): Unit = {
val aa = new AA
aa.methodAA()
//创建了AA,经隐式方法转换,能调用BB里的方法
aa.methodBB()
}
implicit def AB(a:AA):BB={
new BB
}
}
class AA {
def methodAA(): Unit ={
println("methodAA...")
}
}
class BB {
def methodBB(): Unit ={
println("methodBB...")
}
}
3.隐式类
object ScalaDemo {
def main(args: Array[String]): Unit = {
val aa = new AA
aa.methodAA()
//创建了AA,经隐式类的主构造器转换,能调用BB里的所有方法
aa.methodBB()
aa.methodBB2()
}
implicit class BB(aa: AA) {
def methodBB(): Unit ={
println("methodBB...")
}
def methodBB2(): Unit ={
println("methodBB2...")
}
}
}
class AA {
def methodAA(): Unit ={
println("methodAA...")
}
}
原文:https://www.cnblogs.com/noyouth/p/12703328.html