我有像
这样的字段变量1,变量2,variable3 ....等
我的条件是
if(variable1 != null && variable1 != 0 )
myobject.setFirstValue(variable1);
if(variable2 != null && variable2 != 0 )
myobject.setSecondValue(variable2);
if(variable3 != null && variable3 != 0 )
myobject.setThirdValue(variable3);
像这样,我有近15个志愿者。有没有办法以简单的方式编写所有这些条件。变量名称与我发布的不完全相同。它们与我发布的不同。
答案 0 :(得分:5)
你可以从...开始......
if (notNullOrZer0(variable1)) {
...
}
private boolean notNullOrZero(Integer x) {
return x != null && x != 0;
}
然后可能将所有这些变量放在List<Integer>
中...这取决于代码的其余部分的结构......
答案 1 :(得分:5)
你可以创建一个方法isNotNullorequalsZero
,它检查不为空而不等于零
private boolean isNotNullorequalsZero(Integer value){
return value != null && value != 0;
}
你用它 -
if(isNotNullorequalsZero(variable1) )
myobject.setFirstValue(variable1);
if(isNotNullorequalsZero(variable2) )
myobject.setFirstValue(variable2);
if(isNotNullorequalsZero(variable3) )
myobject.setFirstValue(variable3);
答案 2 :(得分:0)
您可以将所有变量放入数组中并使用for循环检查条件并设置myobject.setFirstValue(array[index]);
答案 3 :(得分:0)
将setFirstValue
方法修改为
void setFirstValue(Integer var){
if(var !=null && var !=0) {
//current logic of setFirstValue
}
}
或者如果无法修改它,请创建一个包装器调用(返回类型布尔值,以便在调用失败时通知用户)
boolean checkAndSetFirstValue(Integer var) {
if(var !=null && var !=0){
setFirstValue(var);
return true;
}
return false;
}
答案 4 :(得分:0)
你可以创建一个名为copyIfNonZero
之类的方法,它可能看起来像这样:
public void copyIfNonZero(MyObject myObject, Integer value) {
if (value != null && value != 0) {
myObject.setFirstValue(value);
}
}
目前的代码将缩减为
copyIfNonZero(myobject, variable1);
copyIfNonZero(myobject, variable2);
copyIfNonZero(myobject, variable3);
...
甚至将变量放在Collection
中并迭代:
Collection<Integer> values = .....
for(Integer value : values) {
copyIfNonZero(myObject, value);
}
答案 5 :(得分:0)
如果这是您的代码中经常发生的事情,并且您想要封装此行为并避免重复它,我会做类似的事情:
在tools或utils类中,创建一个静态方法:
public static void setPropertyIfNonNullNorZero(Object target, String propertyName, Integer value){
//use some reflection tooling here, or write the whole thing yourself... I am using commons.beanutils here
if(value != null && value != 0){
BeanUtils.setProperty(target, propertyName, value);
}
}
此代码假定您的目标对象(myObject)尊重bean约定(基本上是一致的getter和setter命名),并且该值始终为Integer。
然后像这样使用它:
Tools.setPropertyIfNonNullNorZero(myobject, "thirdValue", variable3);