是否有可能从外部对象初始化Scala对象?我正在尝试初始化的Scala对象没有任何Companion类.这是一个例子:
object ObjectA { val mongoDBConnectionURI = // This is the Val that I want to initialize from an external object .... .... }
但是MongoDBConnectionURI类型的mongoDBConnectionURI需要一个主机和一个端口,我必须从配置文件中读取,实际上由对象B完成,这些值传递给ObjA.稍后我的所有DAO对象都将访问对象A中的mongoDBConnectionURI变量以获取连接字符串.如何将对象B中的值传递给对象A并将对象A中的val初始化?
简单方案:
object ObjectA { lazy val mongoDBConnectionURI = getConnection(name.get, passwd.get) var name: Option[String] = None var passwd: Option[String] = None }
如果在"传递"名称和密码后使用mongoDBConnectionURI - 一切都应该正常工作.但我建议使用class而不是object并将其传递给DAO classess(也没有循环引用):
==moduleA== class UserDAO(objectA: ObjectA) ==moduleB== object ObjectB { val user = ... val passwd = ... val a = new ObjectA(name, passwd) object UserDAOInstance extends UserDAO(a) }