Friday, May 20, 2016

Mutable boolean

Sometimes you have already a return value in your java function, but you need to update a boolean field from another function. If you try to give the reference of Java Boolean, it is not working.

public void refresh(Object data){
   Boolean isChanged = Boolean.FALSE;
   updateFirstPart(data, isChanged);
   updateSecondPart(data, isChanged);
   if (isChanged) {
      saveData(data);
   }
}

protected void updateFirstPart(Object data, Boolean isChanged){
   if(conditions...){
       data.setName("vmi");
       isChanged = Boolean.TRUE;
   }
}

The data will be never saved, the isChanged filed keeps the false value.



So for this we a Mutable Boolean type in Apache commons lang.

import org.apache.commons.lang3.mutable.MutableBoolean;
public void refresh(Object data){
   MutableBoolean isChanged = new MutableBoolean(false);
   updateFirstPart(data, isChanged);
   updateSecondPart(data, isChanged);
   if (isChanged.isTrue()) {
      saveData(data);
   }
}

protected void updateFirstPart(Object data, MutableBoolean isChanged){
   if(conditions...){
       data.setName("vmi");
       isChanged.setTrue();
   }
}

No comments:

Post a Comment