仅初始化内部对象一次

时间:2011-12-15 11:21:15

标签: scala

在Scala中,我有以下课程:

class A(param: String) {
  object B {
    lazy val db = {new D(param)}
  }
}

然后从客户端代码我必须多次创建A类对象,但只能初始化一次B.db参数。目前,这不起作用,因为每次创建A类实例时都会创建对象B的新实例。

为了添加一些透视图,B.db对象是Mongo类的一个实例,根据文档需要只初始化一次。你会怎么做呢?

1 个答案:

答案 0 :(得分:8)

将它放在伴侣对象而不是内部对象

object A {
   apply(param:String) {
      new A             
   }

   lazy val db = {..}
}
class A{

}