Scala的隐式对象和隐式类(一)

25 阅读1分钟

隐式对象

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

隐式对象和前面讲的隐式参数比较类似,都是用来设置初始数据的。

隐式类

背景:有一个现有的类,它有一个方法。现在我们需要对这个类的功能进行拓展,额外补充一个方法。

但是,不允许直接修改原来的类的代码。

package imp

/*
*  隐式式
*
*  背景:有一个现成的类,它有一个方法。 我们现在需要对这个类的功能进行拓展:额外补充一个新方法。
*  但是:不允许直接修改原来的类的代码
*
*  思路:
*    1. 补充一个新的类,把这个新的方法写到这个类中。
*    2. 补充一个隐式转换函数,把这个旧类转成这个新类。
* */

object imp05 {

  class User {
    def insertUser(): Unit = {
      println("添加一个新用户.......")
    }
  }

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

  implicit def XXX(user: User):UserExt = {
    new UserExt
  }

  def main(args: Array[String]): Unit = {
    val u1 = new User()
    u1.insertUser()

    u1.updateUser()
  }
}