Kotlin返回Null不能是非null类型的值

时间:2019-04-01 05:24:02

标签: kotlin

我正在尝试为Kotlin函数返回空值。它给我错误Null cannot be a value of a non-null type。但我希望能够返回null。尽管看起来函数可以为空,但它是接口重写,在这种情况下,没有返回值。

override fun call(jso: JSONObject): JSONObject {
    ...
    ...
    return null
}

我想我可以使用?将变量标记为可为空。但是在这种情况下,我可以将?放在哪里?

2 个答案:

答案 0 :(得分:4)

您必须将?放在返回类型之后:

override fun call(jso: JSONObject): JSONObject? {
    ...
    return null
}

由于具有override修饰符,因此还需要更改超类方法的返回类型。

答案 1 :(得分:0)

对于那些面临相同问题的人,即使您将返回类型更改为例如JSONObject,我也可以返回null。出现错误:

返回类型为'JSONObject?',这不是重写的子类型 公共摘要...

只需执行以下操作:

override fun call(jso: JSONObject): JSONObject {
    ...
    throw Exception("Error message!")
}