Kotlin如何推断Java方法参数的可空性?
我试图从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 通过传递
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;