2016-06-13 2 views
6

private final String s(Java)またはval s(Kotlin)という最終フィールドを宣言したとします。初期化中に、私はリモートサービスへの呼び出しの結果でフィールドを初期化します。 Javaではコンストラクタ(例:s = RemoteService.result())で初期化することができますが、Kotlinではこれを行う方法を理解できません。宣言されている行と同じ行に初期化する必要があるためです。ここでの解決策は何ですか?Kotlinの最終フィールドを初期化するにはどうすればよいですか?

答えて

10

あなたは、initブロックにval値を設定することができます。

class MyClass { 

    val s: String 

    init { 
     s = "value" 
    } 

} 
4

ます。また、値は、それが参照される最初の時間に初期化されますby lazyで値を初期化することができます。例

val s by lazy { RemoteService.result() } 

kotlinは、式の戻り値の型からsの型を推測します。

関連する問題