枚举类实现判断数值大小计算,干掉ifelse
目的干掉ifelse,使用此写法可以试试哦。
话不多说,上demo!
1.新建一个接口,包装用于枚举类实现。
public interface PlanInventoryFilterTypeBizService {
/**
* 条件
* @param qty 数量
* @param historyQty 数量
* @return
*/
boolean op(BigDecimal qty, BigDecimal historyQty);
}
2.在来一个枚举类,实现每个枚举值对应的算法。
public enum PlanInventoryFilterType implements PlanInventoryFilterTypeBizService {
/**
* 大于
*/
lt {
@Override
public boolean op(BigDecimal qty, BigDecimal historyQty) {
if (historyQty.compareTo(qty) > 0) {
return true;
} else {
return false;
}
}
},
/**
* 等于
*/
eq {
@Override
public boolean op(BigDecimal qty,BigDecimal historyQty) {
if (historyQty.compareTo(qty) == 0) {
return true;
} else {
return false;
}
}
},
/**
* 大于等于
*/
ltEq {
@Override
public boolean op(BigDecimal qty,BigDecimal historyQty) {
if (historyQty.compareTo(qty) >= 0) {
return true;
} else {
return false;
}
}
},
/**
* 小于
*/
gt {
@Override
public boolean op(BigDecimal qty,BigDecimal historyQty) {
if (historyQty.compareTo(qty) < 0) {
return true;
} else {
return false;
}
}
},
/**
* 小于等于
*/
gtEq {
@Override
public boolean op(BigDecimal qty,BigDecimal historyQty) {
if (historyQty.compareTo(qty) <= 0) {
return true;
} else {
return false;
}
}
}
}
3.测试
public static void main(String[] args) {
//3.13 < 4.2 ? true
boolean op1 = PlanInventoryFilterType.valueOf(PlanInventoryFilterType.lt.name()).op(new BigDecimal(3.13), new BigDecimal(4.2));
System.out.println(op1);
//4.2 < 3.13 ? false
boolean op2 = PlanInventoryFilterType.valueOf("gt").op(new BigDecimal(3.13), new BigDecimal(4.2));
System.out.println(op2);
}
如果觉得写的不错或者想了解更多,欢迎收藏和关注~~