如何初始化Kotlin的最后一个字段?

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

您可以在init块中设置val值:

 class MyClass { val s: String init { s = "value" } } 

您也可以by lazy初始化该值,该值将在第一次被引用时初始化。 一个例子

 val s by lazy { RemoteService.result() } 

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