Java反射操作含有集合的类

这篇博客探讨了在Java开发中如何使用反射来操作包含集合的类,并进行数据加密。通过遍历对象的所有属性,包括父类的属性,识别并处理集合类型的字段,对每个元素递归调用加密方法。同时,检查字段上的特定注解以执行业务逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中有时候会通过反射操作包含集合的类,直接上代码

   private static void encryptField(Object encryptObject) {

        Class<?> infoClass = encryptObject.getClass();
        //获取所有属性包括父类
        List<Field> allField= new ArrayList<>();
        while (infoClass != null) {  // 遍历所有父类字节码对象
            Field[] declaredFields = infoClass.getDeclaredFields();
            try {
                fieldsList.addAll(Arrays.asList(declaredFields));  //将`Filed[]`数组转换为`List<>`然后再将其拼接至`ArrayList`上
                infoClass = infoClass.getSuperclass();  // 获得父类的字节码对象
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        for (Field field : allField) {
            field.setAccessible(true);
            Object obj = field.get(encryptObject);
            if (obj == null) {
                continue;
            }
            //判断是否是集合类型
            if (obj instanceof Collection) {
                Collection<?> collection = (Collection<?>) obj;
                for (Object o : collection) {
                    if (o != null) {
                        //递归
                        encryptField(o);
                    }
                }
            }
            //后面就是具体业务功能操作
            //该字段是否加了EncryptSwitch注解
         if (field.isAnnotationPresent(EncryptSwitch.class)) {
             System.out.println(field);

            }

        }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值