Scala apply方法学习(类和对象都存在apply方法)

[color=red][b]Scala比Java更面向对象的一个方面是Scala没有静态成员。[/b][/color]替代品是,Scala有单例对象:singleton object。

[color=blue][size=large][b]当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。[/b][/size][/color][size=large][b]你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。[/b][/size]

[size=medium][color=red][b]类和它的伴生对象可以互相访问其私有成员。[/b][/color][/size]

[color=red][b]定义单例对象不是定义类型(在Scala的抽象层次上说)[/b][/color]

[color=red][b]类和单例对象间的一个差别是,单例对象不带参数,而类可以。[/b][/color]因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。[size=medium][color=red][b]Scala程序特别要指出的是,单例对象会在第一次被访问的时候初始化。[/b][/color][/size]

Scala 的apply 有2 张形式,[size=medium][color=blue][b]一种是 伴生对象的apply ,一种是 伴生类中的apply[/b][/color][/size],下面展示这2中的apply的使用。

示例代码:


class ApplyOperation {
}
class ApplyTest{
def apply() = println("I am into spark so much!!!")
def haveATry: Unit ={
println("have a try on apply")
}
}
object ApplyTest{
def apply() = {
println("I am into Scala so much")
new ApplyTest
}
}
object ApplyOperation{
def main (args: Array[String]) {
val array= Array(1,2,3,4)
val a = ApplyTest() //这里就是使用object 的使用

a.haveATry
a() // 这里就是 class 中 apply使用
}
}


[b]运行结果[/b]

I am into Scala so much 
have a try on apply
I am into Spark so much!!!


[color=red][b]object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例。[/b][/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值