![](/img/trans.png)
[英]Why can a java nullable returned value be assigned to a Kotlin Non-Nullable variable?
[英]Pass null to non-nullable Java method from Kotlin
假设有声明为@NonNullApi
的 Java 库,但它的某些方法实际上可能会消耗null
参数。
有没有办法忽略不可空性要求并从null
那里通过 null?
UPD需要澄清:方法被 3rd 方库声明为不可为空,无法更改其代码。 目标是打破呼叫方的限制。
明显的方法是使用反射,但也许 Kotlin 只提供语法?
一个明显的非答案:不要那样做!
该 API 文档说:不要以这种方式发送null
。
即使今天的实现并没有因为传入null
而对您不利,谁说这不是错误,并且不会在该库的某些即将发布的版本中得到修复?
换句话说:编写代码以匹配指定的 API。
当库实现比 API 规范更慷慨时,请遵循更严格的规则。 您甚至应该考虑为该库编写一份报告。
正如此处的另一个答案所指出的,最好不要克服用可空性注释表示的 Java function 的可空性合同。
但是,如果您真的认为这些注释是错误的,您可以使用以下解决方法:
null
的那些参数上没有NonNull
注释,它只是将它们转发到有问题的方法。 即使可空性注释不匹配,Java 编译器也不会阻止调用该方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.