scala的隐式对象和隐式类

28 阅读1分钟

(一)隐式对象

隐式对象是一个带有implicit关键字的单例对象,它可以用于提供某种类型的实例以供隐式转换使用。隐式对象通常用于将某个类或trait的实例隐式地注入到方法中。

(二)隐式类

有一个方法。现在我们需要对这个类的功能进行拓展,额外补充一个方法。但是,不允许直接修改原来的类的代码。

package imp

/*
* 隐士类
*
* 背景:有一个现成的类,它有一个方法,我们现在需要对这个类的功能进行拓展:额外补充一个新方法。
*
* 但是:不允许直接修改原来的类的代码
*
* 思路:
* 1.补充一个新的类,把这个新的方法写到这个类中
* 2.
* */
object imp05 {
  class User {
    def insertuSer():Unit ={
    println("添加一个新用户....")
  }
}

class UserExt {
  def updatedUser():Unit={
    println("修改用户.....")
  }
}

  implicit def XXX(user:User):UserExt={
    new UserExt
  }
  def main(args: Array[String]): Unit = {
    val u1 = new User()
    u1.insertuSer()
    u1.updatedUser()
  }
}

image.png