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

时间:2015-09-28 07:39:09

标签: java variables null initialization

我在Java中有这个代码:

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

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

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

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

4 个答案:

答案 0 :(得分:6)

compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
compile 'com.android.support:cardview-v7:23.0.1'
compile 'com.oguzdev:CircularFloatingActionMenu:1.0.2'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.google.android.gms:play-services:8.1.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.googlecode.linkedin-j:linkedin-j-core:1.0.416'
compile 'oauth.signpost:signpost-core:1.2.1.2'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4'
compile 'com.googlecode.json-simple:json-simple:1.1'
compile 'org.twitter4j:twitter4j-core:4.0.2'
compile files('libs/itsrts-pptviewer.jar')
compile files('libs/dropbox-android-sdk-1.6.3.jar')
compile 'com.joanzapata.pdfview:android-pdfview:1.0.1@jar'
compile 'com.facebook.android:facebook-android-sdk:4.1.0'  

或者如果你想String foo = request.getParameter("bar") !=null ? request.getParameter("bar") :""; 两次打电话,你可以写

getParameter()

这叫做ternary operator or conditional operator (:?)

答案 1 :(得分:4)

如果你使用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"))

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

我建议您使用Google MoreObjects.firstNonNull中的Guava以免通话 request.getParameter(“bar”)两次。

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