long winAmount = 0;
for (Iterator iterator = entities.iterator(); iterator.hasNext();) {
T entity = (T) iterator.next();
Field winAmountField = null;
Field taxAmountField = null;
try {
winAmountField = entity.getClass().getDeclaredField(winAmountName);
taxAmountField = entity.getClass().getDeclaredField(taxAmountName);
Object winAmountObject = invokeMethod(entity, winAmountField.getName());
Object taxAmountObject = invokeMethod(entity, taxAmountField.getName());
//代码到这里就够了,灰色部分是业务相关逻辑,不必去看,以上两个object即为TImpWinPrize类中"winAmount","taxAmount"两个属性的值
if(Long.parseLong(taxAmountObject.toString()) > 0){
return WinLotteryStatus.BIG_AWARD;//1
}
winAmount +=Long.parseLong(winAmountObject.toString());
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
if (winAmount>Long.parseLong(prizeParam)) {
return WinLotteryStatus.BIG_AWARD; //1
}
return WinLotteryStatus.NOT_BIG_AWARD;//0
}
/**
* 获得对象属性的值
*/
@SuppressWarnings("unchecked")
private static Object invokeMethod(Object entity, String methodName) throws Exception {
Class entityClass = entity.getClass();
methodName = methodName.substring(0, 1).toUpperCase() + methodName.substring(1);
Method method = null;
try {
method = entityClass.getMethod("get" + methodName);
} catch (SecurityException e) {
logger.error("inner_error",e);
} catch (NoSuchMethodException e) {
logger.error("no_such_method",e);
}
return method.invoke(owner);
}
public static void main(String[] args) {
List<TImpWinPrize> winPrizeLt =new ArrayList<TImpWinPrize>();
for (int i = 0; i < 5; i++) {
TImpWinPrize impWinPrize =new TImpWinPrize();
impWinPrize.setWinAmount(i+2100);
impWinPrize.setTaxAmount(0);
winPrizeLt.add(impWinPrize);
}
System.out.println(getBigAwardFlag(winPrizeLt, "10000","winAmount","taxAmount"));
}