Kotlin 初始化陷阱。初始化注意事项
一 注意属性与init中的调用顺序
class Player6() {
init {
val bloodBonus = blood.times(4)
}
val blood = 100;
}
fun main() {
}
像java的静态代码块。和成员变量的顺序是可以这样的
但是在kotlin中不行。因为Kotlin是根据代码顺序进行初始化的
编译成字节码就会是这样
顺便证明了。init的执行地方是构造方法初始化后。。
可行的初始化为如此
class Player6() {
val blood = 100;
init {
val bloodBonus = blood.times(4)
}
}
fun main() {
}
反编译字节码如下
陷阱二
class Player7() {
val name: String
private fun firstLetter() = name[0];
共有 0 条评论