Kotlin中的方法的返回类型应该是什么?该方法的值可以为null,并且将从Java调用?
我总是在Kotlin中使用nullable类型作为方法的返回类型,因为它可能返回null,但是我的Kotlin代码中的一些thode方法也可以从Java调用 我的Java代码中刚刚出现了一个NullPointerException,因为在调用其中一个方法后,我忘记了检查nullability。这不会发生在Kotlin中,因为编译器会强迫我检查它Kotlin中的方法的返回类型应该是什么?该方法的值可以为null,并且将从Java调用?,java,kotlin,nullpointerexception,optional,nullable,Java,Kotlin,Nullpointerexception,Optional,Nullable,我总是在Kotlin中使用nullable类型作为方法的返回类型,因为它可能返回null,但是我的Kotlin代码中的一些thode方法也可以从Java调用 我的Java代码中刚刚出现了一个NullPointerException,因为在调用其中一个方法后,我忘记了检查nullability。这不会发生在Kotlin中,因为编译器会强迫我检查它 处理这种情况的正确方法是什么?我是否应该仅在Kotlin中专门使用的代码中使用nullable类型作为方法的返回类型,并始终在Kotlin方法中返回一个
处理这种情况的正确方法是什么?我是否应该仅在Kotlin中专门使用的代码中使用nullable类型作为方法的返回类型,并始终在Kotlin方法中返回一个可选类型,该类型也将从Java代码中调用 Kotlin将使用字节码中的
@Nullable
对该方法进行注释,并且两者都应该能够检测到问题。如果您想让您的体验更接近Kotlin(即使没有达到它),您可以将严重性级别提高到error
我不建议从所有“可空”方法返回Optional
,原因有二:
可选
使用起来远不如Scala中的方便当值可能不存在时,返回一个
可选值
对于定义合同是有意义的。另一方面,如果在查找时值必须存在,它也可以回退到null
作为默认值。应该根据服务协议进行明智的选择。@Naman值可以为null,我的方法返回tKotlin中的ype是可空的。问题是,当从Java调用此方法时,我没有Kotlin编译器强制我检查可空性。您建议在Scala中返回选项吗?是的。异常可能类似于Spark的Java API:一个库,或它的一部分,专门用于从Java(或Kotlin)使用。