我正在尝试为Kotlin函数返回空值。它给我错误Null cannot be a value of a non-null type
。但我希望能够返回null。尽管看起来函数可以为空,但它是接口重写,在这种情况下,没有返回值。
override fun call(jso: JSONObject): JSONObject {
...
...
return null
}
我想我可以使用?
将变量标记为可为空。但是在这种情况下,我可以将?
放在哪里?
答案 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!")
}