Java 反射中的Field类

在开发过程中遇到的需求是当前端调用修改接口的时候,我需要知道他具体修改了那些字段的值,因为现有的修改方法是用mybatis框架的updateById()方法写的,即使前端只传了主键ID和具体的修改字段,后端还是需要判断属性的非空,这时候就需要用到java的反射特性,去获取参数中不为空的字段,就可以得到具体修改的字段了

class.getDeclaredFields()方法用于获取类中声明的所有字段,包括公共、私有和受保护的字段,但不包括从父类继承的字段。

    public boolean myUpdateById(VideoInfo videoInfo) {

        //通过反射获取不为空的字段
        Field[] fields = VideoInfo.class.getDeclaredFields();
        for (Field field:fields){
            field.setAccessible(true); //允许访问私有字段
            try{
                Object value = field.get(videoInfo);
                if (value != null){
                    String name = field.getName();
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }

‌ 这个方法返回一个Field对象数组,每个对象表示类中的一个字段‌,Object value = field.get(videoInfo);可以获取当前字段的值;field.getName();可以获取当前字段的名称

System.out.println(name+":"+value);
你会得到类似输出:
eewId:666666

这样就可以判断前端调用修改接口的时候具体修改了哪些字段了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值