创建:UsageOfApply.scala
package org.victor.scala.base
/**
* Company: Huazhong University of science and technology
* 华中科技大学电气学院聚变与等离子体研究所
* Version: V1.0
* Author: Victor
* Contact: 1650996069@qq.com 2018--2020
* Software: IntelliJ IDEA
* File: UsageOfApply
* Time: 2018/10/12 21:53
* Desc:apply的使用
**/
class UsageOfApply {
}
//做过Java开发都知道 main方法中的对象都是静态的,而scala object对象的方法都是静态方法
class ApplyTest{
def test={
println("ApplyTest-->Test.....")
//Class中也可以有apply方法,其使用方法如下所示:
def apply()= "the apply() is in class"
}
}
object ApplyTest{
var count = 0
//看apply如何使用
def apply(): ApplyTest = new ApplyTest
def static={
println("ApplyTest-->static......")
}
//由于 object中的方法和属性都是静态的,所以就是单例对象的理想载体了,示例代码如下:
def increment: Unit ={
count = count +1
print(count+" ")
}
}
//App内部帮我们实现了main方法并管理工程师写的代码
object UsageOfApply extends App {
ApplyTest.static
//当 val applyTest = new ApplyTest() 会导致apply方法的调用并返回该方法调用的值,
// 也就是ApplyTest的实例化对象
val applyTest = new ApplyTest()
applyTest.test
//检测单例模式
for(i <-1 to 100){
ApplyTest.increment
}
println()
println("ApplyTest.count="+ApplyTest.count)
}
object本身就是一个单例对象
=================================================================
结果: