比较两个对象中所有的属性值大小

需求

最近碰上这么一个需求:
一张表里面有一组数据的标准值(阀值),其余数据全是实际情况的具体值,现在要求如果实际情况的具体值大于了标准值,就要吧这条数据插入另一张表里面;
其实本质情况不就是对比两个对象中的全部属性值大小嘛

示例数据

实际数据展示:
在这里插入图片描述
标准值(阀值)展示
在这里插入图片描述

思路

因为要对比所有的属性值大小,首先要拿到单个属性,所以这块我们可以利用反射去做:

  1. 暴力反射拿到类中所有的值;(因为都是private修饰,所以必须得是暴力反射)
  2. 获取各个属性值的大小,然后作比较;(有个小细节,注意值的类型)
  3. 超过标准值(阀值),塞进另一张表。

代码

public void compareObject(Object obj1, Object obj2) throws Exception{
    	//确保是同一对象
        if (obj1.getClass() == obj2.getClass()) {
            // 获取所有属性
            Field[] fs = obj1.getClass().getDeclaredFields();
            //获取各个属性的值
            for (Field field : fs) {
                //true代表暴力反射,可以访问private修饰的东西,否则无法访问
                field.setAccessible(true);
                Object v1 = field.get(obj1);
                Object v2 = field.get(obj2);
                if(v1 instanceof Double && v1 instanceof Double){//值的类型
                    ifOverThreshold(field.getName(),v1, v2);
                }
            }
        }
    }

public void ifOverThreshold(String fieldName, Object obj1, Object obj2) throws Exception {
        String message = "";
        if((double)obj1 > (double)obj2){
           message =fieldName + "数据超阈值";
            System.out.println(message);
            
            //超出阀值插入另一张表的操作
            
        }else{
            //符合标准值以下的操作
            
        }
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值