科特林:如何构造
访问性能考虑跟进类:科特林:如何构造
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