2016-06-13 33 views
6

比方說,我宣佈了最終字段爲private final String s(Java)或val s(Kotlin)。在初始化期間,我想通過調用遠程服務的結果初始化字段。在Java中,我可以在構造函數中初始化它(例如s = RemoteService.result()),但是在Kotlin中,我無法弄清楚如何做到這一點,因爲據我所知,該字段必須在聲明的同一行中進行初始化。這裏有什麼解決方案?如何初始化Kotlin的最終字段?

回答

10

可以設置在初始塊val值:

class MyClass { 

    val s: String 

    init { 
     s = "value" 
    } 

} 
4

也可以與by lazy初始化值的值將被第一次它被稱爲初始化。示例

val s by lazy { RemoteService.result() } 

kotlin將從表達式的返回類型中猜測s的類型。