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

qri*_*kko 5 java variables null initialization

我在Java中有这个代码:

String foo = request.getParameter("bar");
if (foo == null) { 
    foo = ""; 
}
Run Code Online (Sandbox Code Playgroud)

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

String foo = request.getParameter("bar") || "";
Run Code Online (Sandbox Code Playgroud)

我真的只是想知道Java中是否存在等价物.

Bha*_*ikh 7

如果您使用 java 8,您可能可以使用以下方法:

Optional.ofNullable(request.getParameter("bar")).orElse("")
Run Code Online (Sandbox Code Playgroud)

如果您不使用 java 8,则可以选择使用来自 Google GuavaOptional。它提供了类似的 API。例如。

Optional.fromNullable(request.getParameter("bar")).or("")
Run Code Online (Sandbox Code Playgroud)

这两者都允许指定一个函数来创建替代值。

如果你只是想老派,创建一个方法,如:

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

emptyIfNull(request.getParameter("bar"))
Run Code Online (Sandbox Code Playgroud)


Sur*_*tta 6

String foo = request.getParameter("bar") !=null ? request.getParameter("bar") :""; 
Run Code Online (Sandbox Code Playgroud)

或者如果你想要getParameter()两次打电话,你可以写

String foo = request.getParameter("bar");
foo = foo!=null? foo : "";
Run Code Online (Sandbox Code Playgroud)

这就是所谓的ternary operator or conditional operator (:?).