首页 > 编程语言 >Java对象中非空属性一键转Map,让你的代码飞起来

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

时间:2024-05-28 19:11:05浏览次数:24  
标签:Map Java map 一键 commons beanutils 属性

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

引言

在日常开发中,经常会遇到需要将一个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方法
}

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

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

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

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

标签:Map,Java,map,一键,commons,beanutils,属性
From: https://www.cnblogs.com/bigleft/p/18218667

相关文章

  • 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框
    升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0uniapp、vue、android、web框架:Vue3+SpringBoot3),界面功能(二)    客户订货---订货模板      客户订货模板      ......
  • 揭秘丨文字游侠AI工具:一键生成高质量爆文赚米,提升20倍写作效率,附上渠道和实操教程!
    在这个信息泛滥的时代,内容创作者们不断寻求更高效、更创新的方法,以便在众多竞争者中脱颖而出。虽然平台如今日头条为他们提供了展示才华和获取收益的舞台,但如何在激烈的竞争中站稳脚跟,仍是他们需要面对的挑战。然而,现在一款全新的AI工具正在引领一场革命,为创作者们带来了前所......
  • 深入理解Java Stream流
    深入理解JavaStream流Java8引入的StreamAPI为我们提供了一种全新的处理集合的方式,使得我们能够更加优雅和高效地进行数据处理。本文将深入探讨JavaStream流,包括其基本概念、常用操作以及一些实际应用场景。什么是Stream?Stream是Java8中引入的一种处理数据集合的抽象......
  • JavaSE:String类常用方法(巨详细)
    1、引言在学习C语言时,我们就已经了解了字符串,但是在C语言中字符串只能用字符数组或者指针来表示,没有特定的字符串类型,而在Java中,我们有了字符串这一特定的类型---String类。2、String类的常用方法2.1字符串的构造方法在我们定义一个字符串的时候,我们可以使用以下常用的三......
  • 【Java】如何设计一个支持万亿 GB 网盘实现秒传与限速的系统?
    一、问题解析网盘,又称云盘,是提供文件托管和文件上传、下载服务的网站(Filehostingservice)。人们通过网盘保管自己拍摄的照片、视频,通过网盘和他人共享文件,已经成为了一种习惯。我们准备开发一个自己的网盘应用系统,应用名称为“DBox”。十几年前曾经有个段子,技术人员对老板说......
  • SpringBoot升级到3.2.0报错Invalid value type for attribute ‘factoryBeanObjectTyp
    1现象SpringBoot由3.1.0升级为3.2.0时报的错:直接debug进入该行,看到报错的bean信息:看到是MyBatis出问题。2处理MyBatis先想到mybatis-spring版本较低导致。大家应该都用的MyBatisPlus,其实可暂缓升级3.2,等待一段时间,升级MyBatisPlus即可,目前MyBatisPlus的mybatis-spring......
  • 踩坑记录: nohup: failed to run command ‘java‘: No such file or directory
    执行一个shell脚本直接在终端可以执行但是在云效流水线上就会出现这个问题 先查看一下java-version 已经安装好了的话还是出现这个问题解决方案1:在执行Java包的前面加上这个 source/etc/profile还是不可以的话 解决方案2:先查看自己的jdk安装路径 which......
  • vue+java基于SpringBoot的私募基金投资管理系统的毕业设计
    当前,项目管理已然成为企业顺利高速发展的重要竞争手段,随着项目数量的增多,业务的复杂性、精确性要求提高,项目管理至关重要,对于私募基金管理项目这样风险性极高、业务复杂度极高的项目来说,更是需要进行规范化的项目管理以保证安全性、提高效率。功能1.   项目池管理模块项......
  • Java面试
    包含的模块本文分为十九个模块,分别是:Java基础、容器、多线程、反射、对象拷贝、JavaWeb、异常、网络、设计模式、Spring/SpringMVC、SpringBoot/SpringCloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM,如下图所示:共包含208道面试题,本文的......
  • MapLibre踩坑之官网demo
    第一步,下载工程gitclonehttps://github.com/maplibre/maplibre-react-native.git第二步,运行工程cdmaplibre-react-native/exampleyarninstall #多次执行,直到没有错误提示yarnreact-nativerun-android第三步,排错Didn'tfindclass"com.facebook.drawee.backends.p......