为什么每次使用字段时都会初始化对象的字段?我的期望是Scala对象的一个实例,在我的例子中是P的一个实例,因为它属于一个Scala对象而被创建一次。运行下面的代码看起来并非如此。每次调用P上的方法时都会创建P的实例。 我找不到这种行为的任何解释。有人可以帮忙吗?感谢。
object LoadingTest {
println("create Object")
def p = new P()
def main(args: Array[String]) {
p.printIt()
p.printIt()
}
}
class P(){
println("create P")
def printIt()={
println("print it")
}
}
输出:
create Object
create P
print it
create P
print it
答案 0 :(得分:7)
这是因为你有def p = new P()
。通过使用def
定义此方法,您将定义一个方法。所以每次引用p
时,它都会调用方法,从而实例化一个新的P
。
您需要val p = new P()
,这将确保对象仅实例化一次,存储为val
,并在每次引用时重复使用。