apply
- 1.作用:写在伴生对象中,既可以允许创建对象的时候,省略new
- 2.在伴生对象中提供了apply方式,那么在这里会自动调用他
package level02
object Class10 {
// 伴生类
class Logger
// 伴生对象
object Logger {
def apply(): Logger = {
println("logger......")
new Logger()
}
}
def main(args: Array[String]): Unit = {
// 方式1:使用new创建对象
// val log1 = new Logger()
// 方式2:通过伴生对象的apply方法创建对象(省略new)
val log1 = Logger()
val log2 = Logger()
println(log1 == log2) // 输出false,因为每次都是新实例
}
}
eg:
package level02
object Class10 {
// 伴生类
class Logger
// 伴生对象
object Logger {
val instance = new Logger()
def apply(): Logger = {
println("logger......")
instance
}
}
def main(args: Array[String]): Unit = {
// 通过伴生对象的apply方法创建对象(单例模式)
val log1 = Logger()
val log2 = Logger()
println(log1 == log2) // 输出true,因为始终返回同一个实例
}
}