我有这段代码可以从文件中加载属性:
class Config {
val properties: Properties = {
val p = new Properties()
p.load(Thread.currentThread().getContextClassLoader.getResourceAsStream("props"))
p
}
val forumId = properties.get("forum_id")
}
这似乎工作正常。
我尝试将初始化移动properties
到另一个 val,loadedProperties
中,如下所示:
class Config {
val properties: Properties = loadedProps
val forumId = properties.get("forum_id")
private val loadedProps = {
val p = new Properties()
p.load(Thread.currentThread().getContextClassLoader.getResourceAsStream("props"))
p
}
}
但它不起作用!(properties
在 中为空properties.get("forum_id")
)。
为什么会这样?loadedProps
引用时不评估properties
?
其次,这是初始化需要非平凡处理的变量的好方法吗?在 Java 中,我会声明它们final
的字段,并在构造函数中执行与初始化相关的操作。
Scala 中是否有这种场景的模式?
谢谢!