Scala的世界中,对象object用于持有类的唯一对象(单例),使用object定义,常用于作为工厂或者组织静态方法。下面是一个简单的定义:
object Timer {
var count = 0
def currentCount(): Long = {
count += 1
count
}
}
类似与Java中的静态方法,对象中的方法直接使用对象的名称来调用:
Timer.currentCount(); //> res0: Long = 1
可以存在名称相同的一个对象和一个类,这个对象通常叫做伴生对象(companion object),常用来作为工厂:
class Bar(foo: String)
object Bar {
def apply(foo: String) = new Bar(foo)
}
当然,这个类没有太多用处,除了省略new关键字:
val bar = Bar("barname") // vs. val bar = new Bar("barname")