好程序员大数据学习路线分享scala单列和伴生对象
创新互联成立于2013年,是专业互联网技术服务公司,拥有项目网站建设、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元白云做网站,已为上家服务,为白云各地企业和个人服务,联系电话:18980820575scala单例
object SingletonDemo {
def main(args: Array[String]): Unit = {
val s = SessionFactory
println(s.getSession)
println(s.getSession.size) //.size得到几个session对象
}
}
object SessionFactory{
println("SessionFactory 被执行了")
//计数器
var i = 5
//存放session对象的数组
val sessions = new ArrayBuffer[Session]()
while(i>1){
println("while被执行了")
sessions.append(new Session)
i -= 1
}
//获取session对象
def getSession = sessions
}
class Session{
}
伴生对象
单例对象包括伴生对象,类与伴生对象之间可以互相访问,即使被private修饰的私有字段和属性
伴生对象首先是一个单例对象,单例对象用object定义
在scala中,单例对象分两种
1.关联并未自动关联到特定类的单例对象,称为独立对象 ->Standalone Object
2.关联到一个类的单例对象,该单例对象与该类是同一个类名,称为伴生对象 ->Companion Object
class companionObject {
var id = 0
private val name = "zhaoxiaodan"
def printContent() = {
println(name+companionObject.Constant)
}
}
object companionObject {
private val Constant = " is my goddess"
def main(args: Array[String]): Unit = {
val co = new companionObject
co.id = 8
println(co.id)
println(co.name)
co.printContent() //zhaoxiaodan is my goddess
}
}
apply和unapply(通常在类的伴生对象中定义apply方法)
apply方法通常被称为注入方法,在类的伴生对象中做一个初始化操作
apply方法的参数列表不需要和主构造器列表统一
unapply方法通常为提取方法,使用unapply方法可以提取构造器中固定数量的对象和值
unapply方法会返回一个Option,如果Option里有值的话,内部会有一个some对象来封装这些值
class ApplyDemo(val name: String, val age: Int, val faceValue: Int) {
}
object ApplyDemo {
//注入方法
def apply(name: String, age: Int): ApplyDemo = {
new ApplyDemo(name,age,faceValue = 80) //初始化
}
//提取方法
def unapply(applyDemo: ApplyDemo):Option[(String,Int,Int)]={
if (applyDemo == null){
None
}else{
Some(applyDemo.name,applyDemo.age,applyDemo.faceValue)
}
}
}
object ApplyTest{
def main(args: Array[String]): Unit = {
val applyDemo = ApplyDemo("赵晓丹",18)
applyDemo match {
case ApplyDemo("赵晓丹",age,faceValue) =>println(s"name:赵晓丹,age:$age,fv:$faceValue")
case _=> println("is null")
}
}
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。