Scala Singleton和伴随对象

时间:2020-01-09 10:47:19  来源:igfitidea点击:

Scala单例和伴随对象
Scala类不能具有静态变量或者方法。相反,Scala类可以具有所谓的单例对象,有时也可以具有伴随对象。

使用关键字object声明一个单例对象。这是一个例子:

object Main {
    def sayHi() {
        println("Hi!");
    }
}

这个例子定义了一个叫做Main的单例对象。我们可以像这样调用方法sayHi()

Main.sayHi();

注意如何在方法名称之前写入对象的全名。没有实例化任何对象。就像在Java中调用静态方法一样,只不过我们是在单例对象上调用该方法。

伴随对象

当单例对象的名称与类相同时,它称为伴随对象。必须在与该类相同的源文件中定义一个伴随对象。这是一个例子:

class Main {
    def sayHelloWorld() {
        println("Hello World");
    }
}

object Main {
    def sayHi() {
        println("Hi!");
    }
}

在这个类中,我们既可以实例化Main并调用sayHelloWorld(),也可以直接在伴随对象上调用sayHi()方法,如下所示:

var aMain : Main = new Main();
aMain.sayHelloWorld();

Main.sayHi();