更改 kotlin 中重写函数参数的可为空性

2024-03-20

我正在实现第三方库(java)的接口。我正在使用以下签名重写函数:

override fun onCallback(name: String?) {

}

我可以更改为以下内容,而编译器不会抱怨:

override fun onCallback(name: String) {

}

这有什么效果呢?如果底层库调用会发生什么onCallback(null)?


来自 Java 的类型是平台类型(在本例中,此参数的类型为String!。如果参数没有在 Java 中注释,则由您决定它是否可以有一个nullvalue,并且你必须在 Kotlin 中相应地标记参数的类型。如果将其标记为不可空,但 Java 代码通过null对此,您将在运行时遇到异常 - Kotlin 会生成对此类参数的检查,您可以通过反编译生成的字节码来查看这些检查。

另请参阅官方文档空安全和平台类型 https://kotlinlang.org/docs/reference/java-interop.html#null-safety-and-platform-types了解更多详情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 kotlin 中重写函数参数的可为空性 的相关文章

随机推荐