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

我正在实现一个第三方库(Java)的接口。 我用下面的签名覆盖了一个函数:

override fun onCallback(name: String?) { } 

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

 override fun onCallback(name: String) { } 

这是什么效果? 如果底层库调用onCallback(null)会发生什么情况?

来自Java的types是平台types(在这种情况下,这个参数有一个String!types,如果这个参数没有用Java注释,那么决定它是否可以有一个null值,并且你必须标记Kotlin中的参数types相应地如果你把它标记为非空,但是Java代码将null传递给它,你会在运行时得到一个exception – Kotlin生成这样的参数检查,你可以通过反编译生成的字节码。

有关更多详细信息,另请参阅有关空值安全性和平台types的官方文档。