Java对象中非空属性一键转Map,让你的代码飞起来

createh54个月前 (01-07)技术教程47

哈喽,大家好,我是木头左!

引言

在日常开发中,经常会遇到需要将一个Java对象中的非空属性提取出来,放到一个Map中的情况。这样的做法有很多好处,比如方便进行属性的查找、修改等操作,同时也能够提升代码的可读性和可维护性。那么如何实现这个功能呢?本文将为你揭晓答案!

一、准备工作

在开始之前,需要准备一些工具和库。需要引入一个名为bean-utils的第三方库,它可以帮助轻松地获取Java对象的属性值。你可以通过以下命令将其添加到你的项目中:

<!-- Maven -->
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.4</version>
</dependency>

<!-- Gradle -->
implementation 'commons-beanutils:commons-beanutils:1.9.4'

另外,还需要使用Java的反射机制来获取对象的属性值。你可以通过以下方式创建一个工具类,用于封装这些操作:

import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class ObjectToMapUtil {
    public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<>();
        for (Field field : obj.getClass().getDeclaredFields()) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(obj));
        }
        return map;
    }
}

二、实战演示

接下来,将通过一个实际的例子来演示如何使用ObjectToMapUtil将一个Java对象中的非空属性提取出来,放到一个Map中。假设有一个如下的Java对象:

public class User {
    private String name;
    private Integer age;
    private String email;
    // 省略构造方法、getter和setter方法
}

希望将这个对象的name、age和email属性提取出来,放到一个Map中。可以这样做:

public static void main(String[] args) {
    User user = new User("张三", 25, "zhangsan@example.com");
    try {
        Map<String, Object> map = ObjectToMapUtil.objectToMap(user);
        System.out.println(map); // 输出:{name=张三, age=25, email=zhangsan@example.com}
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}

可以看到,成功地将User对象中的name、age和email属性提取出来,放到了一个Map中。这样就可以方便地进行属性的查找、修改等操作了。同时,由于使用了反射机制,所以这个方法同样适用于其他类型的对象。

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

相关文章

Java类中静态方法和静态变量,静态代码块,构造方法执行顺序

一,Java类执行顺序子类:ATest父类:AParentTest直接调用静态方法第一种:当直接调用(没有new对象)静态方法时候:父类静态变量(按照顺序)执行----->子类静态变量(按照顺序...

为何要在Java中使用静态类?

在Java中,static关键字可以被用于变量,类,代码块和方法。当我们使用static关键字去修饰它们之中的任何一个时,意味着这个指定的成员从属与这个类型本身。换言之, 一个静态成员被创建完成后可以...

手把手教你Java反射的入门

一、什么是反射(Reflection)?简单的来讲就是可以从内存中直接获取到运行的class文件并且能够知道这个类的所有属性和方法;对于任意一个Java对象,都能够调用到它的任意一个方法或属性;这种动...

springboot+thymeleaf+nginx实现页面静态化

适用场景在高并发的情况下,为了缓解服务器动态解析的压力,利用nginx处理静态文件的优点,可将系统中修改次数较少的页面进行静态化处理。自定义工具类import org.thymeleaf.Templa...

详解Java 中 static 的作用

在 Java 中 static 关键字有4种使用场景,下面分别进行介绍:1.static 成员变量public class Student { // 静态成员变量 private st...

Java反射原理和实际用法

Java反射原理和实际用法背景反射在Java中非常重要,是Java区别于其他编程语言的一大特性。Java中的AOP切面、动态代理等看起来像黑魔法一样的技术,就离不开反射、字节码等。这些技术能在不侵入原...