訪問性能考慮跟進類:科特林:如何構造
class Test() {
init {
log(foo)
}
val foo = "Bar"
}
當我instatiate測試它產生一個NullPointerException,因爲富似乎並沒有被初始化。這種行爲實際上是否打算?有沒有解決方法?
訪問性能考慮跟進類:科特林:如何構造
class Test() {
init {
log(foo)
}
val foo = "Bar"
}
當我instatiate測試它產生一個NullPointerException,因爲富似乎並沒有被初始化。這種行爲實際上是否打算?有沒有解決方法?
該類的主體是從上到下執行的。如果你想要的東西的屬性初始化後運行一段代碼,就應該下放置:
class Test() {
val foo = "Bar"
init {
log(foo)
}
}
Andrey,感謝您的回答。我的問題是編譯器不允許我將構造函數放在委託屬性後面,因爲它認爲該塊是作爲參數傳遞的lambda表達式。我想你可以在財產後面放一個分號來防止這種情況發生。標記爲正確的答案。 – 2014-10-20 15:08:18
注意:由@Andrey添加的';'不需要在當前Kotlin中分離初始化塊,而是在塊前添加關鍵字'init'。這個答案應該更新爲當前的Kotlin。 – 2015-12-31 00:59:20
更新了語法 – 2015-12-31 12:28:54
注意,當前科特林需要初始化模塊現在有在他們面前的'init'關鍵字。這個問題中的語法已經過時了。 – 2015-12-31 00:59:57
已更新語法 – 2015-12-31 12:28:31