好程序员大数据学习路线分享scala单列和伴生对象
好程序员大数据学习路线分享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单列和伴生对象相关推荐
- hdp对应hadoop的版本_好程序员大数据学习路线分享hadoop的知识总结
大数据学习路线分享hadoop的知识总结,Hadoop的背景:原生公司是apache, cdh的cloudar公司,hortworks公司提供hdp. 其中apache的发行版本大致有1.x ,2.x ...
- 试图加载格式不正确的程序_好程序员大数据学习路线之hive存储格式
好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . orc .自定义 set hive.default.fil ...
- 深圳大数据培训:好程序员大数据学习路线之hive 存储格式
深圳大数据培训:好程序员大数据学习路线之hive 存储格式 好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . ...
- js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...
好程序员web前端学习路线分享HTML5常见面试题集锦,接下来将会持续为大家分享几篇HTML5常见面试题. 1.布局 左边20% 中间自适应 右边200px 不能用定位 答案:圣杯布局/双飞翼布局或者 ...
- addeventlistener不支持ajax_好程序员web前端学习路线分享了解AJAX是什么
好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1. ...
- ajax请求是宏任务还是微任务_好程序员web前端学习路线分享了解AJAX是什么
好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1. ...
- 好程序员web前端学习路线分享css3中的渐进增强和降级
好程序员web前端学习路线分享css3中的渐进增强和降级,渐进增强和降级这两个概念是在 CSS3 出现之后火起来的.由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器 ...
- 如何使用jquery_好程序员web前端学习路线分享jQuery学习技巧
好程序员web前端学习路线分享jQuery学习技巧,jQuery在web前端学习中是一个必不可少的内容,很多小伙伴都在学习这阶段的时候遇到问题,今天我们就来聊一下jQuery,让我们一起来看一看吧! ...
- hive hql文档_大数据学习路线分享hive的运行方式
大数据学习路线分享hive的运行方式,hive的属性设置: 1.在cli端设置 (只针对当前的session) 3.在java代码中设置 (当前连接) 2.在配置文件中设置 (所有session有效) ...
最新文章
- Firefox 多版本共存
- 计算机应用基础的答案2015,2015年《计算机应用基础》模拟试题及答案(一)
- 深入浅出TCP/UDP 原理-TCP篇(1)及完整MATLAB实现UDP通信
- python中time模块详解_Python time模块详解
- 在 Go 语言中 Patch 非导出函数
- js中调用C标签实现百度地图
- ​听说,私有云也出新一代了?
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
- linux脚本嵌套,linux shell 嵌套expect 与服务器交互脚本
- Windows域策略 设置客户端服务启动状态 【全域策略生效】
- java调用数据库存储过程_Java调用SQL Server的存储过程详解
- 对vue饿了么项目重构之后的一些理解
- c++ 11 新特性之 左值右值
- java web后台开发规范01
- bmFont的使用方法
- 1v1微信聊天测试点
- win10创建新的计算机用户名和密码,win10电脑怎么新建用户?高手教你在win10新建用户的方法...
- 概念(航天):LEO,MEO,GTO,GEO,IGSO,SSO
- 英飞凌TC397移植FreeRTOS
- 《Java程序设计》公选课学习指南
热门文章
- python爬取网页信息
- Python05_数据类型_运算符_数据拼接_type()函数_数据转换
- GVS广州建博会全回顾:有料,有得聊
- Degree Sequence of Graph G
- WPF空心圆角combox
- Python 继承/基础综合练习题
- Typecho魔改版二次元风格G主题
- 单相交交变频电路仿真,负载为阻感负载,文件中附带理论说明
- css设置字体大小会受分辨影响吗,CSS字体大小设置时的参考(转)
- c语言杨辉三角实训报告,杨辉三角实验报告.doc