apply方法

34 阅读1分钟
/*
  * apply
  * apply方法写在伴生对象中,可以创建对象的时候,省略new关键字
  *
  *  val 对象 = 伴生类()  <====> 伴生对象.apply()
   */

  class Person() {

  }

  object Person {
    def apply(): Person = {
      println("apply ......")
      new Person()
    }
  }

  def main(args: Array[String]): Unit = {
    // 创建一个类的对象
//   val p1 = newPerson()
 val p1 = Person()  // 自动调用apply方法
 val p2 = Person()
    
    println(p1)
    println(p2)
/*
  * apply
  *   apply方法写在伴生对象中, 可以创建对象的时候,省略new关键字
  *   实现单例模式
  *    在伴生对象中 创建一个对象,在apply方法中返回它
   */

 class Person()  {
   println("主构造器被调用......")
 }

object Person {
  val p = new Person()
  def apply():Person = {
    p
 }
}

def main(args: Array[String]): Unit = {
  // 创建一个类的对象
  //    val p1 = new Person()
  val p1 = Person() // 自动调用apply方法
  val p2 = Person()

  println(p1)
  println(p2)