从 Kotlin 调用 Java 方法时如何安全地处理 null 值?

Sta*_*tor 3 java nullpointerexception kotlin kotlin-null-safety

当与没有 null 安全性的 Java 库交互时,如何在 Kotlin 中处理 null 安全性?

通过研究,我发现以下一些东西“有效”,但并不安全。

  1. 将 Kotlin 的非 null 类型与返回 null 的 Java 方法结合使用:

  2. !!将运算符与返回 null 的 Java 方法一起使用:

  3. 假设 Java 布尔值永远不为 null:在 Java 中,Boolean可以是true, false, 或null,但在 Kotlin 中,Boolean只能是truefalse

在这些示例中,我的 Kotlin 编译器不会显示错误,因为它没有足够的关于 Java 方法是否可以返回 null 的信息。

Ten*_*r04 5

像在 Java 中一样对待它。假设该值可能为 null,除非您从中获取该值的方法的文档声明该值不会为 null。如果它没有声明不会返回 null,则它是可以为 null 的。将其完全视为可为 null 的 Kotlin 变量。因此,请根据具体情况使用?.、、、?:或。if (foo != null).orEmpty()

Java 还具有不可为 null booleanlongintcharbytedoublefloat。如果您看到小写类型,则说明它不可为空。