Scala中如何不使用if-else处理NullPointerException?
解决Scala字符串空指针异常(不使用if-else)
原代码因字符串变量为null,调用length方法时抛出空指针异常:
java.lang.NullPointerException: Cannot invoke "String.length()" because "x" is null
以下是借助isDefined检查空值、无需if-else的解决方案:
val x: String = null val len = Option(x) match { case opt if opt.isDefined => opt.get.length case _ => 0 // 可替换为你需要的默认值 } println(len) // 输出0
原理说明
- 用
Option(x)将可能为null的变量包装为Option类型:当x为null时得到None,非null时得到Some(x)。 isDefined是Option的内置方法,当实例为Some时返回true,None时返回false。- 通过模式匹配结合
isDefined判断:若存在有效值则取字符串长度,否则返回默认值,全程无需if-else语句。
注:原代码中val x: String = "null"是赋值为字符串"null",不会触发空指针异常,异常出现的原因应为x被赋值为null引用,上述代码已修正该赋值。
内容的提问来源于stack exchange,提问作者Naveenkumar
相关产品推荐
相关产品推荐

