Scala隐式转换
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...")
}
}
下面的代码标明了类的泛型为java中的Float,而在scala代码中直接写10.5f类型为scala的Float。scala与java存在大量的交互使用,通过隐式转换,省去简单又繁琐的编码。
val compare2 = new CommonCompare[java.lang.Float](10.5f, 20.5f)

浙公网安备 33010602011771号