java 通过反射遍历所有字段修改值的实例代码

 更新时间:2021年05月18日 08:39:19   作者:如漩涡  
这篇文章主要介绍了java 通过反射遍历所有字段修改值,通过java 的反射,遍历所有字段,进行一个判断,取出来的值是带有图片链接的,进行操作,省去了很多代码,理解也很容易,下面跟随小编看下实例代码吧

先给大家介绍下java遍历所有字段修改值的代码,具体内容详情如下所示:

java 通过反射遍历所有字段修改值,避免重复set、get 比如一张表里的字段十几个,而这个表里的图片存储字段有八九个,在返回这个实体类的时候,要对图片进行加密或者其他操作,那就要在实体类查询结果出来后,一个个的get修复,再set赋值,代码量很多,另外如果有多个接口用到,就会产生重复代码; 通过java 的反射,遍历所有字段,进行一个判断,取出来的值是带有图片链接的,进行操作,省去了很多代码,下面贴代码

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ClassUtil {
   
    private  final Logger logger = LoggerFactory.getLogger(getClass());

    /**
     * 通过反射所有字段,带有图片的字段,重新赋值
     *
     * @param obj 对象
     */
    public void setImageValue(Object obj) {
        try {
            Class aClass = obj.getClass();
            Field[] fields = aClass.getDeclaredFields();
            for (Field field : fields) {
                PropertyDescriptor pd = new PropertyDescriptor(field.getName(),
                        aClass);
                // 获取get方法
                Method getMethod = pd.getReadMethod();
                // 获取set方法
                Method setMethod = pd.getWriteMethod();
                // 通过get方法获取到值
                Object o = getMethod.invoke(obj);
                if (o != null) {
                    String s = o.toString();
                    if (s.contains("jpg")) {
                        // 业务操作
                        // 更新为新的值
                        setMethod.invoke(obj, builder.toString());
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 }

ps:下面看下Java数组遍历的几种方式

数组遍历方式参考:

方法一:for循环遍历

  public static void main(String[] args) {
        int Arr[][]={{1,2,3},{4,5,6}};
        for (int i = 0; i < Arr.length; i++) {
            for (int j = 0; j < Arr[i].length; j++) {
                System.out.print(Arr[i][j]+" ");
            }
        }
    }

方法二:foreach遍历

 int a[] = {1,2,3,4} ;
        for (int element:a){
            System.out.println(element);

        }

方法三:Arrays工具类中toString (或deepToString)静态方法遍历

  int a[] = {1,2,3,4} ;
        int b[][] = {{3,4},{1,2}};
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.deepToString(b));

以上就是java 通过反射遍历所有字段修改值的实例代码的详细内容,更多关于java遍历所有字段修改值的资料请关注脚本之家其它相关文章!

相关文章

  • 图解Java线程的生命周期

    图解Java线程的生命周期

    本文主要介绍了Java中线程的5种状态(新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead))之间的转换图解,有需要的朋友可以参考下
    2014-10-10
  • Java 读写Properties配置文件详解

    Java 读写Properties配置文件详解

    这篇文章主要介绍了Java 读写Properties配置文件详解的相关资料,这里举例说明该如何实现,具有参考价值,需要的朋友可以参考下
    2016-11-11
  • java短网址服务(TinyURL)生成算法

    java短网址服务(TinyURL)生成算法

    这篇文章主要为大家详细介绍了java短网址服务生成算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • java中Hibernate面试知识点整理

    java中Hibernate面试知识点整理

    在本篇文章里小编给大家整理的是一篇关于java中Hibernate面试知识点整理内容,有兴趣的朋友们可以学习参考下。
    2021-01-01
  • 详细分析Java内部类——局部内部类

    详细分析Java内部类——局部内部类

    这篇文章主要介绍了Java局部内部类的相关资料,帮助大家更好的理解和学习Java 内部类的知识,感兴趣的朋友可以了解下
    2020-08-08
  • java实现学生信息管理系统

    java实现学生信息管理系统

    这篇文章主要为大家详细介绍了java实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 使用Spring Security控制会话的方法

    使用Spring Security控制会话的方法

    在本文中,我们将说明Spring Security如何允许我们控制HTTP会话。这篇文章主要介绍了使用Spring Security控制会话 ,需要的朋友可以参考下
    2019-05-05
  • JDK21新特性Record Patterns记录模式详解(最新推荐)

    JDK21新特性Record Patterns记录模式详解(最新推荐)

    这篇文章主要介绍了JDK21新特性Record Patterns记录模式详解,本JEP建立在Pattern Matching for instanceof(JEP 394)的基础上,该功能已在JDK 16中发布,它与Pattern Matching for switch(JEP 441)共同演进,需要的朋友可以参考下
    2023-09-09
  • springBoot+mybatis-plus实现监听mysql数据库的数据增删改

    springBoot+mybatis-plus实现监听mysql数据库的数据增删改

    mybatis-plus技术是简化了繁琐的代码操作,把增删改查的语句都内置了,直接调用就可以实现数据库的增删改查了,这篇文章主要给大家介绍了关于springBoot+mybatis-plus实现监听mysql数据库数据增删改的相关资料,需要的朋友可以参考下
    2024-01-01
  • 新手了解java IO基础知识

    新手了解java IO基础知识

    这篇文章主要介绍了java 基础知识之IO总结的相关资料,Java中的I/O分为两种类型,一种是顺序读取,一种是随机读取,需要的朋友可以参考下,希望对你有帮助
    2021-07-07

最新评论