我总是在Kotlin中使用可为空的类型作为方法的返回类型,因为它可能返回null,但是我的Kotlin代码中的一些thode方法也可以从Java调用。
我在Java代码中刚刚得到了NullPointerException,因为在调用其中一种方法后,我忘记了检查可为空性。在Kotlin中不会发生这种情况,因为编译器会迫使我进行检查。
处理这种情况的正确方法是什么?我是否应该仅在Kotlin内专用的代码中使用可空类型作为方法的返回类型,而在我的Kotlin方法中始终返回一个Optional,这也会从Java代码中调用呢?
Kotlin将用字节码中的@Nullable
注释该方法,并且IDEA和Eclipse (with some extra configuration)都应该能够检测到该问题。如果您想使您的体验更接近Kotlin(即使没有达到),可以将严重性级别提高到错误。
出于两个原因,我不建议从所有“可空”方法中返回Optional
:
Optional
的使用方便性比例如在Scala中。
您使用的库(包括标准库)不这样做(甚至可能不使用注释:(),因此您已经需要处理返回null的方法。