Kotlin - why do I get a KotlinNullPointerException

后端 未结 4 1769
借酒劲吻你
借酒劲吻你 2021-01-17 15:50

Consider the following code:

Example

fun main(args: Array) {
    maybeWriteMessage()
}

fun maybeWriteMessage(message:         


        
4条回答
  •  一生所求
    2021-01-17 16:29

    In the following code:

    fun maybeWriteMessage(message: String? = null) {
        writeMessage(message!!)
    }
    

    you're asserting that the nullable parameter message is not null by using !! (the not-null assertion operator). If message is null though, this will throw a null pointer.

    TL;DR: Do not use !! unless you exactly know what you're doing. There's almost always a better way.

    The !! Operator

    The third option is for NPE-lovers: the not-null assertion operator (!!) converts any value to a non-null type and throws an exception if the value is null. We can write b!!, and this will return a non-null value of b (e.g., a String in our example) or throw an NPE if b is null:

    val l = b!!.length

    Thus, if you want an NPE, you can have it, but you have to ask for it explicitly, and it does not appear out of the blue.

提交回复
热议问题