Kotlin如何推断Java方法参数的可空性?

Kotlin如何推断Java方法参数的可空性?,java,kotlin,null,Java,Kotlin,Null,我试图从Kotlin代码中调用Java方法org.springframework.data.mongodb.core.query.Update#set。此方法声明为 公共更新集(字符串键、对象值) 没有关于参数可空性的附加注释或注释。事实上,它只是将值放入哈希映射,因此有效地值可能是空值 但是,Kotlin编译器将value类型视为Any(而不是预期的Any!),并在使用传递null时失败 Null can not be a value of a non-null type Any 通过传递

我试图从Kotlin代码中调用Java方法
org.springframework.data.mongodb.core.query.Update#set
。此方法声明为

公共更新集(字符串键、对象值)
没有关于参数可空性的附加注释或注释。事实上,它只是将
放入
哈希映射
,因此有效地
可能是
空值

但是,Kotlin编译器将
value
类型视为
Any
(而不是预期的
Any!
),并在使用传递
null
时失败

Null can not be a value of a non-null type Any
通过
传递可为空的值明显导致
KotlinNullPointerException
,将
强制转换为任何
引发
TypeCastException


这种可空性推断背后的逻辑是什么?通过反射传递
null
参数实际上效果很好,但有更自然的解决方案吗

这是由以下内容中的注释引起的:

那是

@org.springframework.lang.NonNullApi
package org.springframework.data.mongodb.core.query;