小编Tig*_*ite的帖子

Kotlin 通过惰性抛出 NullPointerException

我目前正在尝试在《Kotlin 编程大书呆子牧场指南》一书的帮助下学习 Kotlin,到目前为止一切正常。但现在我正在努力解决“惰性”初始化,它抛出一个 NullPointerException ,上面写着

无法调用“kotlin.Lazy.getValue()”,因为“< local1>”为 null

对应的行是:

val hometown by lazy { selectHometown() } 
private fun selectHometown(): String = File("data/towns.txt").readText().split("\n").shuffled().first()
Run Code Online (Sandbox Code Playgroud)

如果您想自己编译它或需要更多代码来更好地理解,我在下面提供了 Game.kt 和 Player.kt。如果为了“正常”初始化而放弃“惰性”,则家乡将按预期分配。欢迎提供任何有关解决问题和了解问题原因的提示。

// Game.kt
package com.bignerdranch.nyethack

fun main(args: Array<String>) {

    val player = Player("Madrigal")
    player.castFireball()
}

private fun printPlayerStatus(player: Player) {
    println("(Aura: ${player.auraColor()}) " + "(Blessed: ${if (player.isBlessed) "YES" else "NO"})")
    println("${player.name} ${player.formatHealthStatus()}")
}
Run Code Online (Sandbox Code Playgroud)
// Player.kt
package com.bignerdranch.nyethack

import java.io.File

class Player(_name: String, var healthPoints: Int = 100, val isBlessed: Boolean, private val isImmortal: Boolean) { …
Run Code Online (Sandbox Code Playgroud)

null exception nullpointerexception kotlin

4
推荐指数
1
解决办法
2669
查看次数

标签 统计

exception ×1

kotlin ×1

null ×1

nullpointerexception ×1