ファイルからプロパティをロードする次のコードがあります。
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
ではnullですproperties.get("forum_id")
)。
なぜそうなるのでしょうか?loadedProps
参照されたときに評価されませproperties
んか?
第二に、これは重要な処理を必要とする変数を初期化するための良い方法ですか?final
Javaでは、フィールドを宣言し、コンストラクターで初期化関連の操作を行います。
Scalaにこのシナリオのパターンはありますか?
ありがとうございました!