有没有办法在 null 时自动初始化变量

Is there a way to automatically initialize a variable if null

我在 Java 中有此代码:

String foo = request.getParameter("bar");
if (foo == null) { 
    foo = ""; 
}

以这种方式检查了多个值。在其他语言中,我可能可以做这样的事情:

String foo = request.getParameter("bar") || "";

我真的只是想知道 Java 中是否有等价物。

String foo = request.getParameter("bar") !=null ? request.getParameter("bar") :""; 

或者如果你想getParameter()调用两次,你可以写

String foo = request.getParameter("bar");
foo = foo!=null? foo : "";

那叫ternary operator or conditional operator (:?)

我建议使用 MoreObjects.firstNonNull from google Guava 以免调用 request.getParameter("bar") 两次。

String foo = MoreObjects.firstNonNull(request.getParameter("bar"), "");

Apache Commons Lang 有方法 ObjectUtils::defaultIfNull。您可以使用 sᴜʀᴇsʜ ᴀᴛᴛᴀ 的方法自行轻松实现它:

public static <T> T defaultIfNull(T object, T defaultValue) {
    return object == null ? defaultValue : object;
}

如果你使用 java 8,你可能会这样:

Optional.ofNullable(request.getParameter("bar")).orElse("")

如果您不使用 java 8,您可以选择使用 Optional from Google Guava。其中提供类似 API。例如

Optional.fromNullable(request.getParameter("bar")).or("")

这两个都允许指定一个函数来创建备用值。

如果你只是想走老路,创建一个像这样的方法:

static String emptyIfNull(String value) {
    if (value == null) return "";
    else return value;
}

emptyIfNull(request.getParameter("bar"))