伴生对象的apply和unapply方法
代码
//user类 参数name和password
class User(val name:String,val password:String) {
}
//user伴生对象
object User{
def apply(name: String, password: String): User = new User(name, password)
def unapply(arg:User):Option[(String,String)]={
if(arg==null)None
else Some(arg.name,arg.password)
}
}
object usertest{
def main(args: Array[String]): Unit = {
//new对象时如果class里没有构造器,会调用伴生对象的apply方法
val obj=new User("张三","12456")
println(obj.isInstanceOf[User])
println(obj.name+":"+ obj.password)
//模式匹配会调用伴生对象的unapply方法
obj match{
case User(name,password)=>println(name+":"+password)
case _=>println("None")
}
}
}
结果
true
张三:12456
张三:12456
Process finished with exit code 0