如何初始化Kotlin的最终字段?

如何初始化Kotlin的最终字段?

问题描述:

比方说,我宣布了最终字段为private final String s(Java)或val s(Kotlin)。在初始化期间,我想通过调用远程服务的结果初始化字段。在Java中,我可以在构造函数中初始化它(例如s = RemoteService.result()),但是在Kotlin中,我无法弄清楚如何做到这一点,因为据我所知,该字段必须在声明的同一行中进行初始化。这里有什么解决方案?如何初始化Kotlin的最终字段?

可以设置在初始块val值:

class MyClass { 

    val s: String 

    init { 
     s = "value" 
    } 

} 

也可以与by lazy初始化值的值将被第一次它被称为初始化。示例

val s by lazy { RemoteService.result() } 

kotlin将从表达式的返回类型中猜测s的类型。