好程序员大数据学习路线分享scala单列和伴生对象

scala单例

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")

}

}

}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913892/viewspace-2654457/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69913892/viewspace-2654457/

好程序员大数据学习路线分享scala单列和伴生对象相关推荐

  1. hdp对应hadoop的版本_好程序员大数据学习路线分享hadoop的知识总结

    大数据学习路线分享hadoop的知识总结,Hadoop的背景:原生公司是apache, cdh的cloudar公司,hortworks公司提供hdp. 其中apache的发行版本大致有1.x ,2.x ...

  2. 试图加载格式不正确的程序_好程序员大数据学习路线之hive存储格式

    好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . orc .自定义 set hive.default.fil ...

  3. 深圳大数据培训:好程序员大数据学习路线之hive 存储格式

    深圳大数据培训:好程序员大数据学习路线之hive 存储格式 好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . ...

  4. js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...

    好程序员web前端学习路线分享HTML5常见面试题集锦,接下来将会持续为大家分享几篇HTML5常见面试题. 1.布局 左边20% 中间自适应 右边200px 不能用定位 答案:圣杯布局/双飞翼布局或者 ...

  5. addeventlistener不支持ajax_好程序员web前端学习路线分享了解AJAX是什么

    好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1. ...

  6. ajax请求是宏任务还是微任务_好程序员web前端学习路线分享了解AJAX是什么

    好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1. ...

  7. 好程序员web前端学习路线分享css3中的渐进增强和降级

    好程序员web前端学习路线分享css3中的渐进增强和降级,渐进增强和降级这两个概念是在 CSS3 出现之后火起来的.由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器 ...

  8. 如何使用jquery_好程序员web前端学习路线分享jQuery学习技巧

    好程序员web前端学习路线分享jQuery学习技巧,jQuery在web前端学习中是一个必不可少的内容,很多小伙伴都在学习这阶段的时候遇到问题,今天我们就来聊一下jQuery,让我们一起来看一看吧! ...

  9. hive hql文档_大数据学习路线分享hive的运行方式

    大数据学习路线分享hive的运行方式,hive的属性设置: 1.在cli端设置 (只针对当前的session) 3.在java代码中设置 (当前连接) 2.在配置文件中设置 (所有session有效) ...

最新文章

  1. Firefox 多版本共存
  2. 计算机应用基础的答案2015,2015年《计算机应用基础》模拟试题及答案(一)
  3. 深入浅出TCP/UDP 原理-TCP篇(1)及完整MATLAB实现UDP通信
  4. python中time模块详解_Python time模块详解
  5. 在 Go 语言中 Patch 非导出函数
  6. js中调用C标签实现百度地图
  7. ​听说,私有云也出新一代了?
  8. 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
  9. linux脚本嵌套,linux shell 嵌套expect 与服务器交互脚本
  10. Windows域策略 设置客户端服务启动状态 【全域策略生效】
  11. java调用数据库存储过程_Java调用SQL Server的存储过程详解
  12. 对vue饿了么项目重构之后的一些理解
  13. c++ 11 新特性之 左值右值
  14. java web后台开发规范01
  15. bmFont的使用方法
  16. 1v1微信聊天测试点
  17. win10创建新的计算机用户名和密码,win10电脑怎么新建用户?高手教你在win10新建用户的方法...
  18. 概念(航天):LEO,MEO,GTO,GEO,IGSO,SSO
  19. 英飞凌TC397移植FreeRTOS
  20. 《Java程序设计》公选课学习指南

热门文章

  1. python爬取网页信息
  2. Python05_数据类型_运算符_数据拼接_type()函数_数据转换
  3. GVS广州建博会全回顾:有料,有得聊
  4. Degree Sequence of Graph G
  5. WPF空心圆角combox
  6. Python 继承/基础综合练习题
  7. Typecho魔改版二次元风格G主题
  8. 单相交交变频电路仿真,负载为阻感负载,文件中附带理论说明
  9. css设置字体大小会受分辨影响吗,CSS字体大小设置时的参考(转)
  10. c语言杨辉三角实训报告,杨辉三角实验报告.doc