Java - 如何处理参数传递的空值?

use*_*718 -1 java nullpointerexception

我写了这个简单的函数:

private String getOperatorForCardinality(String op)
{
    String operator ="";
    if(op!=null)
    {
        if(op.equals(">="))
        {
            operator = ">=";
        }
        else if (op.equals("<="))
        {
            operator = "<=";
        }
    }
    else
    {
        operator = "empty";
    }

    return operator;
}
Run Code Online (Sandbox Code Playgroud)

它返回一个字符串。

在主程序中我调用这个函数,当参数为null时,编译器显示NullPointerException错误。原因很清楚,但我不知道如何处理参数传递时的空值。

Boh*_*ian 5

你发布的代码不可能抛出NPE。错误在其他地方,或者您没有运行您认为的代码(即尚未重新编译等)。

也就是说,您的方法可以简化为:

private static List<String> OPS = Arrays.asList("<=", ">=");  // can add more valid ops

private static String getOperatorForCardinality(String op) {
    if (op == null)
        return "empty";
    return OPS.contains(op) ? op : "";
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您不介意嵌套三元:

private static String getOperatorForCardinality(String op) {
    return OPS.contains(op) ? op : op == null ? "empty" : "";
}
Run Code Online (Sandbox Code Playgroud)

更少的代码通常是更清晰的代码,并且为错误留下的潜伏空间也更少。