1

我有像这样的领域

变量1,变量2,变量3....等

我的条件是

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个条件。有什么方法可以简单地编写所有这些条件。变量名称与我发布的不完全相同。它们与我发布的内容不同。

4

6 回答 6

5

你可以从...开始

if (notNullOrZer0(variable1)) {
   ...
}

private boolean notNullOrZero(Integer x) {
    return x != null && x != 0;
}

然后也许把所有这些变量放在一个List<Integer>......这取决于你的其余代码的结构......

于 2013-04-10T11:35:59.560 回答
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);
于 2013-04-10T11:37:38.887 回答
0

您可以将所有变量放在一个数组中,并使用 for 循环检查条件并将值设置为myobject.setFirstValue(array[index]);

于 2013-04-10T11:36:20.733 回答
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;
}
于 2013-04-10T11:38:24.193 回答
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);
...

甚至将变量放入 aCollection并对其进行迭代:

Collection<Integer> values = .....
for(Integer value : values) {
    copyIfNonZero(myObject, value);
}
于 2013-04-10T11:38:33.797 回答
0

如果这是在您的代码中确实经常发生的事情,并且您想封装此行为并避免重复它,我会这样做:

在工具或实用程序类中,创建一个静态方法:

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 命名),并且值始终是整数。

然后像这样使用它:

Tools.setPropertyIfNonNullNorZero(myobject, "thirdValue", variable3);
于 2013-04-10T11:54:47.913 回答