当方法不返回Option时如何处理空值?

时间:2019-12-02 15:59:14

标签: java scala null

在Scala中使用空值处理以下情况的正确方法是什么? getField()generateMetric()方法返回一个字符串。如果返回选项,我可能会在此处应用模式匹配。

Java中,我通常是这样的:

String metric_1 = null;
String metric_2 = null;

if (myObject.getField() != null) {
    metric_1 = myObject.getField();
} else {
    metric_2 = generateMetric();
}

1 个答案:

答案 0 :(得分:5)

您可以将null包裹在Option中的值,例如:

val isNull = null
val isNotNull = "hello"

println(Option(isNull)) // None

println(Option(isNotNull)) // Some(hello)

查看这篇文章:NO NULL VALUES

您的示例如下:

val metric = 
  Option(myObject.getField()).getOrElse(generateMetric())
  1. 包装可以返回null的方法。
  2. 如果有值,则返回它;如果为null,则生成度量。