object 静态类:
1,scala 之中是没有静态方法和静态字段的,可以使用 object 关键字加类名的语法结构来实现的
2,工具类,存放常量和工具方法
3,实现单例模式
package day01 import scala.collection.mutable.ArrayBuffer object Test12 { def main(args: Array[String]): Unit = { val fa= SessionFactu println(fa.getSession) println(fa.getSession.size) println(fa.getSession(0)) println(fa.removesession) } } object SessionFactu{ println("session get") var i = 5 private val session =new ArrayBuffer[Session]() while (i>0){ session += new Session i -= 1 } def getSession = session def removesession :Unit={ val s = session(0) session.remove(0) println("session had remove") } } class Session{ }
伴生对象:
1,与类名相同并且用object修饰的对象叫做伴生对象,比如 List 列表就是伴生对象
2,类对象其伴生对象之间可以互相访问方法与属性
package day01 class Test13 { private var name = "tom" Test13.age = 12 // 更改伴生对象属性! println(Test13.age) } object Test13{ var age = 13 def main(args: Array[String]): Unit = { val tel = new Test13 // 伴生对象更改类对象属性! tel.name = "jeek" println(tel.name) } }
伴生对象 applay 与 unapplay:
1, applay 注入方法,在伴生对象之中做一些初始化的操作
2, applay 的参数列表可以和构造器参数列表不统一
3,unappplay 常为提取方法,用来提取固定数量的对象
4,会返回一个序列(Option),内部生成一个 some对象,
5,applay 与 unappplay 会被隐式调用
package day01 class Test13(val name:String,val age:Int,val face:Int) { } object Test13{ // 注入方法,在伴生对象之中,applay 相当于初始化方法! // 可以和构造器参数列表不统一 def apply(name:String,age:Int,face:Int,gender:Int) = new Test13(name,age,face) // 使用 unapplay 用来提取固定数量的对象! def unapply(test13: Test13): Option[(String,Int,Int)] = { if (test13 == null){ None }else{ // unapply 提取的对象封装给 Some 之中 Some(test13.name,test13.age,test13.face) } } } object test{ def main(args: Array[String]): Unit = { // 创建实例 执行的是 applay 的方法! val test13 = Test13("abc",21,0,34) test13 match { // 此时隐式调用的是 unapplay方法! case Test13("abc",age,face) => println(s"age: $age") case _ => println("no mavhe") } } }