我正在尝试org.springframework.data.mongodb.core.query.Update#set从Kotlin代码调用Java方法。此方法声明为
public Update set(String key, Object value)
Run Code Online (Sandbox Code Playgroud)
没有关于参数可空性的其他注释或注释。事实上,它只是把value成HashMap,所以有效地value可能null。
但是,Kotlin编译器将value类型视为Any(而不是期望的Any!)类型,并且在null与
Null can not be a value of a non-null type Any
Run Code Online (Sandbox Code Playgroud)
有!!明显原因导致传递可空值KotlinNullPointerException,as Any抛出异常TypeCastException。
这种可空性推断背后的逻辑是什么?通过null反射传递参数实际上效果很好,但是还有更自然的解决方案吗?
这是由包中的package-info.java注释引起的:
@org.springframework.lang.NonNullApi
package org.springframework.data.mongodb.core.query;
Run Code Online (Sandbox Code Playgroud)
这是
一个通用的Spring注释,用于声明对于给定的包,默认情况下参数和返回值将被视为不可为空...由Kotlin用来推断Spring API的可空性
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |