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遍历所有字段修改值的资料请关注我们其它相关文章!

(0)

相关推荐

  • java二维数组遍历的2种代码

    二维数组遍历: 思想: 1.先将二维数组中所有的元素拿到 2.再将二维数组中每个元素进行遍历,相当于就是在遍历一个一维数组 第一种方法:双重for循环 //遍历二维数组 public class Traverse_a_two_dimensional_array { public static void main(String[] args) { // TODO Auto-generated method stub int[][] arr = new int[2][3];//动态创建:2个元素(外

  • Java中遍历数组使用foreach循环还是for循环?

    从JDK1.5起,增加了新功能Foreach,它是for循环遍历数据的一种简写形式,使用的关键字依然是for,但参数格式不同.其详细用法为: for(Type e:collection){ //对变量e的使用} 参数说明: e:其类型Type是集合或数组中元素值的类型,该参数是集合或数组collection中的一个元素. collections: 要遍历的集合或数组,也可以是迭代器. 在循环体中使用参数e,该参数是foreach从集合或数组以及迭代器中取得的元素值,元素值是从头到尾进行遍历的.

  • java 遍历Map及Map转化为二维数组的实例

    java 遍历Map及Map转化为二维数组的实例 实例代码: import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class Test { public static void main(String[] args) { int a = 0, b = 0, c = 0; // 第一种:通过Map.keySet()遍历Map及将Map转化为二维数组 Map<String, String>

  • java数组遍历 删除remove(示例代码)

    废话不多说,直接上代码 复制代码 代码如下: package com.b; import java.util.ArrayList; //数组遍历删除,添加 public class Core2 {     private String name;     private int num;     private String color; public Core2() {     } public Core2(String a, int b, String c) {         name =

  • java8新特性 stream流的方式遍历集合和数组操作

    前言: 在没有接触java8的时候,我们遍历一个集合都是用循环的方式,从第一条数据遍历到最后一条数据,现在思考一个问题,为什么要使用循环,因为要进行遍历,但是遍历不是唯一的方式,遍历是指每一个元素逐一进行处理(目的),而并不是从第一个到最后一个顺次处理的循环,前者是目的,后者是方式. 所以为了让遍历的方式更加优雅,出现了流(stream)! 1.流的目的在于强掉做什么 假设一个案例:将集合A根据条件1过滤为子集B,然后根据条件2过滤为子集C 在没有引入流之前我们的做法可能为: public cl

  • Java数组的遍历与求和知识点

    一维数组遍历与求和: public class OneArry{ public static void main(String[] args) { double[] num = {1.9, 2.9, 3.4, 3.5,10,-1}; num[0]=new Double(2); //通过下标把1.9变为2.0 double sum = 0; for (int i = 0; i < num.length; i++) { //遍历 System.out.println(num[i]); sum+=nu

  • Java中使用While语句自增运算遍历数组典型实例

    public class BirdArray { public static void main(String args[]){ String[] str = new String[]{"麻雀","老鹰","白鸽","黄雀","百灵鸟","孔雀","鹦鹉","丹顶鹤"}; int index =0; //创建索引变量 System.out.prin

  • Java数组常见应用详解【创建、遍历、排序、查找】

    本文实例讲述了Java数组常见应用.分享给大家供大家参考,具体如下: 双重for循环 外循环控制行,内循环控制列. //乘法表 for(int i = 1; i <= 9; i++) { for(int j = 1; j <= i ;j++) { System.out.print(j+"*"+i+"="+(i*j)+"\t"); } System.out.println(); } DecimalFormat #:一个数字 0:一个数字

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

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

  • Java通过反射将 Excel 解析成对象集合实例

    1.这是一个通过Java反射机制解析的工具类 2.使用时只需创建对应的对象,并在Excel的第一行填上对应的属性名 3.首先要添加相关的jar包: poi-3.8.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.jar xmlbeans-2.6.0.jar 4.看一下Excel的内容: 5.创建对应的实体类: package com.office.user.dto; public class UserDTO { private String idUser;

  • java根据开始时间结束时间计算中间间隔日期的实例代码

    具体代码如下所述: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class Test { public static List<String> findDates(String stime,

  • Java防止文件被篡改之文件校验功能的实例代码

    1.为什么要防止文件被篡改? 答案是显然的,为了保证版权,系统安全性等.之前公司开发一个系统,技术核心是一个科学院院士的研究成果,作为一款商业软件来说,保证公司及作者版权是非常重要的.系统安全性就更不用说了,系统两三下就被搞垮了,那这个系统就不算是一个合格的系统. 2.文件校验和作用 我们都知道,一个系统或者软件都是由众多文件组成的.文件校验和的作用就是保证系统版本的正确性和唯一性.具体原理下面会详细解释. 3.文件校验和的原理 思路和实现的方式可能多种多样,我说的是自己的思路和实现方式,请读者

  • Java批量转换文件编码格式的实现方法及实例代码

    一.场景说明 不知道大家有没有遇到过之前项目是GBK,现在需要全部换成UTF-8的情况.反正我是遇到了. eclipse可以改变项目的编码格式,但是文件如果直接转换的话里面的中文就会全部乱码,需要先复制文件内容然后改变文件格式,再全选 粘贴(可能有其它更好的方法我不知道), 这样的话一个项目要全部一个一个文件改,想想都难受.作为一个程序猿,就写了个简单的方法让程序处理. 思路:方法很简单,遍历项目文件夹-筛选java扩展文件-把文件编码从GBK转换成UTF-8. 注意:编码格式一定不要弄错,建议

  • JAVA中数组插入与删除指定元素的实例代码

    今天学了Java的数组,写了数组的插入和删除,本人小白,写给不会的小白看,大神请忽略,有错请大家指出来: /** 给数组指定位置数组的插入 */ import java.util.*; public class ArrayInsert{ public static void main(String []args){ System.out.println("请用键盘输入5个数:"); int [] array =new int[10]; Scanner sc=new Scanner(Sy

  • 使用java文件过滤器输出制定格式文件路径的实例代码

    使用java文件过滤器输出制定格式文件路径的实例代码如下所示: 一.使用输出路径判断过滤 import java.io.File; public class demo_file04 { public static void main(String[] args) { fileall(new File("D:\\coding")); } private static void fileall(File f1) { // System.out.println(f1); //判断文件是否是目

  • Java程序打包成带参数的jar文件实例代码

    这里我们通过Apache Commons CLI来完成目标功能,废话不多说直接上代码 所需的maven依赖 <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.4</version> </dependency> 这里我们贴出主类代码 Options opts = new Optio

  • java 将byte中的有效长度转换为String的实例代码

    一般的我们使用byte接收读取到的数据,若数据没有达到byte定义的大小时,我们直接将byte转换为String则会出现乱码的情况,在这种情况下应该基于read的返回值来转换byte,否则将产生乱码的情况, 下面是一个简单的示例: package com.javaio.myinputstream; public class MyConsole { public static void main(String argv[]) throws Exception { System.out.printl

  • Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.chan

随机推荐