我在 Jar 文件中包含这个 Java 类,作为 Scala 程序的依赖项(如 Axis jar):
class MyClass {
private String[] someStrings;
public String[] getSomeStrings() { return someStrings; }
}
在我的 Scala 程序中,我有一个 Java API,它将 MyClass 的实例返回到我在 Scala 中的程序:
val myInstance = JavaAPI.getInstanceOfMyClass()
然后我尝试使用一些字符串我的 Scala 程序中的数组,但它是null(假设它没有正确初始化)
for(str <- myInstance.getSomeStrings()) ...
所以这会抛出一个空指针异常.
我发现为了在 for 理解中使用它,我可以将它包装到一个 Option 中,以便它正确处理 NPE。
for(str <- Option[Array[String]](myInstance.getSomeStrings).getOrElse(Array[String]())
但这对我来说看起来不太好。
有没有一种方法可以创建像隐式方法一样的方法,即使该值为空,也可以将其包装到选项中,例如:
implicit def wrapNull(a: Null): Option[Nothing] = None
implicit def wrapArray(a: Array[String]): Option[Array[String]] = Some(a)
所以当我这样做时:
for(str <- myInstance.getSomeStrings())
我不明白NPE