ファイルからプロパティをロードする次のコードがあります。
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んか?
第二に、これは重要な処理を必要とする変数を初期化するための良い方法ですか?finalJavaでは、フィールドを宣言し、コンストラクターで初期化関連の操作を行います。
Scalaにこのシナリオのパターンはありますか?
ありがとうございました!