我有4个String
个变量:a,b,c,d。
我检查其中一个是null
然后是return false
。
所以我这样做:
if(a==null || b ==null || c ==null || d ==null) return false;
这有什么简短的方法吗?
(我是从java开始)
答案 0 :(得分:4)
如果您的方法如下所示:
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;
}
如果您不知道每个循环的数组或是什么,请查看以下内容:
答案 1 :(得分:3)
不,你的解决方案是最简单的。
答案 2 :(得分:1)
使用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.
答案 3 :(得分:0)
- 您正在使用Non-Short circuit OR
来评估条件,在这种情况下,我认为这是最简单和最简单的。
- 所以你的解决方案就是它所需要的。
答案 4 :(得分:0)
if
在这里是多余的,只需使用return !(a == null || b == null || c == null || d == null);