JAVA 利用反射拼接字段(如:price与1、2、3、4拼成四个字段price1、price2、price3、price4)

public class test{
    public static void main(String[] arg){
        int num=0;
        BigDecimal tatalPrice=BigDecimal.ZERO;
        for(int i=1;i<=31;i++){
            try {
                BigDecimal price=getStringProperty(ro, "price" + i);
                if(!ObjectUtils.isEmpty(price)){
                    tatalPrice =tatalPrice.add(price);
                    num+=1;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 获取bean的某个属性值
    private BigDecimal getStringProperty(MaterialPriceLineVO priceLineVO, String fieldName) throws Exception {
        // 获取Bean的某个属性的描述符
        PropertyDescriptor proDescriptor = new PropertyDescriptor(fieldName, MaterialPriceLineVO.class);
        // 获得用于读取属性值的方法
        Method methodGet = proDescriptor.getReadMethod();
        // 读取属性值
        Object objValue = methodGet.invoke(priceLineVO);
        if (ObjectUtils.isEmpty(objValue) || "null".equals(objValue)){
            return null;
        }else {
            BigDecimal price=new BigDecimal(String.valueOf(objValue));
            return price;
        }
    }

}

 

posted @ 2021-09-02 17:34  哎丫丫呀喂  阅读(148)  评论(0编辑  收藏  举报