apply基本使用

3 阅读1分钟

apply 作用:写在伴生对象中,就可以在创建对象的时候,省略new

//apply
//   作用:写在伴生对象中,就可以在创建对象的时候,省略new


object w37 {
   //伴生类
  class Logger (){}
  //伴生对象
  object Logger {
    val instance = new Logger//单例模式
    def apply():Logger ={
      println("logger....")
      instance//单例模式
    }
  }
  def main(args: Array[String]): Unit = {
    // 创建一个类的对象
    // val log1 = new Logger()
    // 在伴生对象里提供了apply方法,那么这里就会自动去调用它
    val log1 = Logger()
    val log2 = Logger()
    println(log1 == log2)  //这里会输入什么?  true ,因为它得到都是同一个对象  //单例模式
  }

}

aaaaaaaaaaaaaaaaaaaaaaaaa

import java.io.FileWriter
//apply
//   作用:写在伴生对象中,就可以在创建对象的时候,省略new


object w37 {
   //伴生类
  class Logger () {
     def log(content:String):Unit = {
      val writer = new FileWriter("test.log",true)
      writer.write(content)
       writer.close()
       // println(s"$content")
     }
   }
  //伴生对象
  object Logger {
    val instance = new Logger
    def apply():Logger ={
      println("logger....")
      instance
    }
  }
  def main(args: Array[String]): Unit = {
    // 创建一个类的对象
    // val log1 = new Logger()
    // 在伴生对象里提供了apply方法,那么这里就会自动去调用它
    //val log1 = Logger()
    //val log2 = Logger()
    //println(log1 == log2)  //这里会输入什么?  true ,因为它得到都是同一个对象
    val log1=Logger()
    log1.log("2025-11-06 9:37:16 上课\n")
    log1.log("2025-11-06 9:40:16 下课\n")
  }

}