我有 4 个String
变量:a、b、c、d。
我检查其中一个是否是null
then return false
。
所以我这样做:
if(a==null || b ==null || c ==null || d ==null) return false;
有什么捷径吗?
(我开始学习java)
我有 4 个String
变量:a、b、c、d。
我检查其中一个是否是null
then return false
。
所以我这样做:
if(a==null || b ==null || c ==null || d ==null) return false;
有什么捷径吗?
(我开始学习java)
如果您的方法如下所示:
public boolean foo() {
String a = "a", b = "b", c = "c", d = "d";
if(a == null || b == null || c == null || d == null) {
return false;
}
return true;
}
然后有一种方法可以减少代码。你可以这样做:
public boolean foo() {
String a = "a", b = "b", c = "c", d = "d";
return (a != null || b != null || c != null || d != null);
}
但是,如果您有更多的字符串要测试,比如 10 个,甚至 100 个,则需要更少代码的策略是将字符串放入数组并使用for-each循环。事实上,以下方法适用于任何类型的对象,而不仅仅是字符串。
public boolean containsNullObject(Object... objs) {
// loop through each string
for(Object o : objs) {
if(s == null) { return false; } // return false if string is null
}
// if there was no instance of a null object, return true
return true;
}
如果您不知道数组或for-each循环是什么,请查看以下内容:
不,您的解决方案是最简单的。
似乎可以使用 foreach 循环和String
vararg更优雅地表达这一点。它会读起来更好,并允许您轻松调试您的语句。
// method only returns true if all strings are non-null
public boolean all(String... strings) {
for(String str : strings) {
if(null == str) {
return false;
}
}
return true;
}
然后你会以这种方式调用它:
return all(a, b, c, d); // will return false if any of these are null, otherwise true.
-您正在使用Non-Short circuit OR
评估条件,我认为在这种情况下这是最恰当和最简单的。
-所以你的解决方案就是它需要的。
if
这里是多余的,只需使用return !(a == null || b == null || c == null || d == null);