我一直认为Scala对象仅仅是Java单例对象的简写 - 也就是说,我期望它们像具有保证单例实例化的对象一样运行。但是我遇到了这样的情况,我不理解:
object Test extends App{
var x ="a"
override def main(args:Array[String]):Unit = {
println(x )
}
}
该代码打印null而不是"a"。
查看生成的类,可以得到一个Test$.class,它是对象定义;然而实例值"a"是在一个伴生类Test中通过生成的delayedInit定义的。有人能够说明一下如何实例化吗?显然我对此的心理模型是不正确的。