改变kotlin中被覆函数参数的可空性

时间:2017-11-24 21:03:11

标签: kotlin

我正在实现第三方库(java)的接口。我正在覆盖具有以下签名的函数:

override fun onCallback(name: String?) {

}

我可以在没有编译器抱怨的情况下更改为以下内容:

override fun onCallback(name: String) {

}

这有什么作用?如果底层库调用onCallback(null)

会发生什么

1 个答案:

答案 0 :(得分:2)

来自Java的类型是平台类型(在这种情况下,此参数的类型为String!。如果参数未在Java中注释,则由您自行决定是否可以使用{{ 1}}值,你必须相应地在Kotlin中标记参数的类型。如果你把它标记为非可空,但是Java代码将null传递给它,你将在运行时得到一个异常--Kotlin生成对这样的参数的检查,您可以通过反编译生成的字节码来查看。

有关更多详细信息,请参阅有关null safety and platform types的官方文档。