获取集合内对象指定属性值

private static <T> int getBigAwardFlag(Collection<T> entities,String prizeParam,String winAmountName,String taxAmountName){
        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"));
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值