如何初始化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的类型。