(一)apply的基本使用
class Person{
var name = "person"
}
object Person {
def apply(name: String): Person = {
var p = new Person()
p.name = name
p
}
}
object Test {
def main(args: Array[String]): Unit = {
var u1 = Person("小明") // 没有使用new
print(u1.name)
}
}
(1)apply 写在伴生对象中,它返回类的实例
(2)实例化对象时,就可以不用写new
(二)apply实现单例模式
在代码中 isEmpty判断是否为空,Some()用来包装一个对象,如果这个对象为空,就得到None对象,否则就返回这个对象。
package lalala
object Class11 {
class Logger(){}
object Logger {
val instance=new Logger()
def apply(): Logger= {
println("logger.....")
instance
}
}
def main(args: Array[String]): Unit= {
val log1 = Logger()
val log2 = Logger()
println(log1 == log2)
}
}