BeanUtils工具类

CST实战:5分钟搞定圆极化天线轴比分析(含远场设置技巧) 本文提供了一份CST Studio Suite圆极化天线轴比分析的实战指南。文章详细讲解了轴比的概念与工程标准,并重点演示了如何正确设置远场监视器以获取Axial Ratio数据,包括关键步骤与后处理技巧。最后,通过植入式天线在生物组织环境中的案例,分析了复杂环境对轴比性能的影响及优化思路。 阅读详情
public class BeanUtils {

    private static final String DEFAULT_HYPHEN = "-";

    /**
     * 对象拷贝,先使用Spring的BeanUtils进行浅拷贝,再尝试拷贝属性名称相同、但类型不同的字段
     *
     * @param source 源对象
     * @param target 目标对象
     */
    public static void copyProperties(Object source, Object target) {
        // 先做属性类型、属性名称都一致的基本拷贝
        org.springframework.beans.BeanUtils.copyProperties(source, target);

        // 尝试拷贝属性名称相同、但类型不同的字段
        try {
            copyPropertiesExtension(source, target);
        } catch (Exception e) {
            log.error("反射调用/访问方法异常", e);
            throw new RuntimeException(e);
        }
    }

    /**
     * 尝试拷贝属性名称相同、但类型不同的字段
     *
     * @param source 源对象
     * @param target 目标对象
     * @throws InvocationTargetException 调用目标方法异常
     * @throws IllegalAccessException    非法访问异常
     */
    public static void copyPropertiesExtension(Object source, Object target) throws InvocationTargetException, IllegalAccessException {
        Class<?> sourceClazz = source.getClass();
        Field[] sourceFields = sourceClazz.getDeclaredFields();

        Class<?> targetClazz = target.getClass();
        Field[] targetFields = targetClazz.getDeclaredFields();

        HashMap<String, Field> targetFieldsMap = Maps.newHashMap();
        for (Field targetField : targetFields) {
            targetFieldsMap.put(targetField.getName(), targetField);
        }

        for (Field sourceField : sourceFields) {
            // 查找属性名相同字段
            String sourceFieldName = sourceField.getName();
            Field targetField = targetFieldsMap.get(sourceFieldName);
            if (targetField != null && "class java.lang.String".equals(targetField.getType().toString())) {
                targetField.setAccessible(true);
                Method sourceMethod;
                try {
                    sourceMethod = source.getClass().getMethod("get" + getMethodName(sourceFieldName));
                } catch (NoSuchMethodException e) {
                    log.error("找不到方法", e);
                    throw new RuntimeException(e);
                }

                // 判断属性类型
                String fieldType = sourceField.getType().toString();
                if ("class java.lang.Double".equals(fieldType)) {
                    // Double转String
                    Double invoke = (Double) sourceMethod.invoke(source);
                    if (invoke != null) {
                        targetField.set(target, invoke.toString());
                    }
                } else if ("class java.lang.Integer".equals(fieldType)) {
                    // Integer转String
                    Integer invoke = (Integer) sourceMethod.invoke(source);
                    if (invoke != null) {
                        targetField.set(target, invoke.toString());
                    }
                } else if ("class java.lang.Long".equals(fieldType)) {
                    // Long转String
                    Long invoke = (Long) sourceMethod.invoke(source);
                    if (invoke != null) {
                        targetField.set(target, invoke.toString());
                    }
                }
            }
        }
    }

    /**
     * 把一个字符串的第一个字母大写、效率是最高的
     *
     * @param str 字符串
     * @return 第一个字母转大写后的str
     */
    private static String getMethodName(String str) {
        byte[] items = str.getBytes();
        items[0] = (byte) ((char) items[0] - 'a' + 'A');
        return new String(items);
    }

    /**
     * 转换JavaBean空字段的Value
     *
     * @param obj obj
     */
    public static void convertNullFieldValue(Object obj) {
        convertNullFieldValue(obj, DEFAULT_HYPHEN);
    }

    /**
     * 转换JavaBean空字段的Value
     *
     * @param obj obj
     * @param str 空字段的值
     */
    public static void convertNullFieldValue(Object obj, String str) {
        Class<?> clazz = obj.getClass();
        Field[] declaredFields = clazz.getDeclaredFields();
        if (declaredFields.length == 0) {
            return;
        }

        for (Field field : declaredFields) {
            field.setAccessible(true);
            try {
                if (field.get(obj) == null && "class java.lang.String".equals(field.getType().toString())) {
                    field.set(obj, str);
                }
            } catch (IllegalAccessException e) {
                throw new RuntimeException();
            }
        }
    }
}

保姆级教程:在阿里云ECS上用Docker一键部署EMQX MQTT服务器(Ubuntu 20.04) 本文提供在阿里云ECS上使用Docker一键部署EMQX MQTT服务器的详细教程,涵盖从实例创建、Docker环境配置到EMQX部署与优化的全流程。适合物联网开发者快速搭建高效、安全的MQTT消息服务器,适用于智能家居、工业物联网等场景。 阅读详情

相关推荐

在F1C100s上跑GBA游戏:手把手教你用Buildroot配置SDL和移植gpsp模拟器

本文详细介绍了在全志F1C100s开发板上配置Buildroot、移植SDL库和gpsp模拟器的完整流程,帮助开发者实现在ARM9平台上流畅运行GBA游戏。内容涵盖环境配置、交叉编译、常见问题解决及性能优化技巧,特别针对'段错误'和'无声音'等典型问题提供实用解决方案。

weixin_42566424的博客 397

List<类型1>转成List<类型2>的LIst类型转换工具类

工具类代码 import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * List类型转换工具类 */ @Slf4j public class BeanHelper { public static <T> T cop

weixin_44257023的博客 1670

【博客汇总】UV打印机博客汇总

UV平板机博客汇总

Print World的专栏 1737

Spring的BeanUtils工具类

BeanUtils默认使用相同名称的属性进行属性复制,如果需要自定义属性映射规则,可以使用BeanUtils提供的自定义转换器。// 自定义转换器 class CustomConverter implements Converter {// 自定义转换逻辑 return convertedValue;} } // 使用自定义转换器进行属性复制 ConvertUtils . register(new CustomConverter() , String . class);

梁童鞋的博客 5174

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2316

HMC7044芯片模拟SPI配置

摘要: HMC7044是一款高性能双环路整数N分频抖动衰减器,支持SPI接口配置,适用于高速数据转换器时钟系统。该芯片采用双PLL级联架构,具有14路可配置输出,可满足GSM/LTE基站设计需求。SPI接口采用3线模式(SLEN/SCLK/SDATA),支持24位寄存器读写(13位地址+8位数据)。驱动实现基于Zynq EMIO模拟SPI,提供初始化、数据传输及寄存器配置功能,支持三线制工作模式和多种时钟参数设置。

toonyhe的博客 1094

BeanUtils工具类下copyProperties拷贝对象的用法

不管是org.springframework.beans还是org.apache.commons.beanutils,都是利用的反射机制和API的封装完成了对属性的赋值,但要注意赋值时属性名要相同以及源对象和目标对象的位置。

n1449211219的博客 2236

《AI编程实战:深度学习模型改进与系统部署》,改进专栏目录和介绍

专深度学习相关项目都写在本专栏,《一次订阅解锁全部,都有源码,永久观看》,包括车牌识别、股票预测、人脸识别、风格迁移、图像修复、图像超分辨重建、图像分割等任务,Web/PyQt系统实现。引入Transformer、Swin Transformer、DenseNet、ViT、ConvNeXt等算法实战,提供卷积改进,魔改对比实验,模型剪枝,模型蒸馏,模型量化,全网独家整合改进专栏,为不同领域的同学发表论文提供了大力支持。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3266

常用工具类BeanUtils

BeanUtils BeanUtils的概述和简单使用 BeanUtils概述 BeanUtils是Apache commons组件的成员在之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装成一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。 需要的jar包 BeanUtils工具常用工具类有两个:BeanUtils,ConvertUtils。BeanUtils用于封装数据,ConvertUtils用于处理类型转换。 常用方法: setProperty(Ob

tian_w的博客 1897

全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2

Livox mid-360需要使用Livox-SDK2,而非Livox-SDK,以及对应的。并需要修改FAST_LIO中部分代码。Faster—LIO;Faster-LIO:快速激光IMU里程计。Faster-LIO:快速激光IMU里程计PDF。大部分Lidar SLAM都是基于loam进行改造的,基本上是通过线特征edge和面特征(面点)分割进行配准得到里程计的,而fast-lio2是通过一个迭代扩展卡尔曼滤波器去优化帧内位姿,然后通过输入点云与地图进行配准得到里程计,精度和鲁棒性都不错。

努力努力努力 6234

【立创EDA-PCB设计基础】1.嘉立创EDA专业版软件安装+PCB基本概念+原理图绘制

本文详解PCB基本概念以及实现MCU最小系统原理图的绘制(原理图包括MCU芯片GD32F103C8T6、外部晶振、输出端口、USB输入口、5v转3v3稳压输出、复位按键、唤醒按键、LED)及嘉立创EDA专业版软件安装。为本专栏【立创EDA-PCB设计基础】后面章节实现PCB绘制做准备。

嵌入式阿齐Archie 3万+

BeanUtils.copyProperties的用法(超详细,建议收藏)

用法 org.springframework.beans.BeanUtils,它提供了对java反射和自省API的包装。它里面还有很多工具类,这里我们介绍一下copyProperties。 我们如果有两个具有很多相同属性的JavaBean对象a和b,想把a中的属性赋值到b,比如接口中将接收到的前端请求参数封装为reqVo,dan @Data public class User { private String id; private String name; private Stri

wwwwwww31311的博客 6万+

工业相机通用SDK封装实战:C#硬件抽象层(HAL)实现多品牌无缝切换

本文介绍了一种解决工业相机SDK碎片化问题的通用解决方案。作者基于多年工业视觉项目经验,提出通过硬件抽象层(HAL)和适配器模式封装不同品牌相机的SDK差异,实现统一的相机操作接口。文章详细分析了传统直接对接SDK方式的四大痛点:接口碎片化、维护成本高、业务耦合度高和稳定性差,并给出了分层架构设计方案。该方案采用三层架构(业务层、抽象层、实现层),遵循最小接口原则和高内聚低耦合等设计理念,定义了包括触发模式、像素格式等通用枚举类型,以及图像数据结构等核心抽象。最终实现的HAL层能够支持多种品牌相机,显著降低

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 575

spring的beanutils工具类_Spring 框架BeanUtils工具类使用(1)

BeanUtils 工具类提供了非常丰富的Java反射API,开发过程中使用恰当可以减少很懂工作量。 其中最常用的莫过于copyProperties :场景设想比如有属性比较多的两个类,User.java 和 UserForm.java 它们俩有部分属性字段是一样的,但UserForm.java是对应前端表单、User.java对应数据库的实体映射,前者带的属性比较多,或者有些字段名称不一样,我现...

weixin_39924486的博客 616

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

对象拷贝工具类BeanUtils

常用的对象拷贝方法有三种: 1.通过set,get方法: //创建user类 public class User { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Stri

wzs535131的博客 1667

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

BeanUtils工具类的介绍和使用

目录BeanUtils工具类介绍BeanUtils工具类的使用简单的演示样例BeanUtils工具类的简要说明BeanUtils工具类外包下载链接 BeanUtils工具类介绍 BeanUtils工具类,简化数据封装 * 用于封装JavaBean的 1. JavaBean:标准的Java类 1. 要求: 1. 类必须被public修饰 2. 必须提供空参的构造器 ...

不愿意做鱼的小鲸鱼の博客 1942

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

012、BeanUtils工具类

BeanUtils工具类,简化数据封装(注意选apache公司) 一、BeanUtils是用于封装JavaBean 1.JavaBean定义:标准的Java类(注意:我们以后我们经常会看到类似domain这样的文件夹,里面放到就是标准java类) 标准的Java类的要求如下: (1). 类必须被public修饰 (2). 必须提供空参的构造...

l0510402015的博客 267

spring的beanutils工具类_Java工具类BeanUtils库介绍及实例详解

BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中。在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中读取到的数据都是String,但是很显然我们的应用程序中不仅仅有String一种数据类型,比如:基本数据类型(int、double、char、float等),还有自定义数据类型(引用数...

weixin_39637921的博客 873

【JavaWeb】BeanUtils工具类的使用

在dao层、servlet层或者其它层时,我们常常需要创建javabean对象; 而使用BeanUtils工具类可以为我们快速的创建javabean对象。举例如下:

T_158327的博客 862

BeanUtils 工具类

一.BeanUtils 概述 BeanUtils 是阿帕奇提供的一套专门用于将一些数据封装到java对象中的工具类; 名词:javaBean:特定格式的java类称为javaBean; 要求: 1:javaBean这个类要实现Serializable接口;(在实际开发中,通常省略了) 2:javaBean必须有public...

weixin_30773135的博客 252

【JAVA】【工具类】超实用的BeanUtils工具类

摘要 本文介绍了一个高性能的BeanUtils工具类,用于处理Java对象间的属性拷贝和类型转换。该工具基于Java反射机制实现,支持对象到对象、Map到对象的属性复制,并内置常见数据类型的隐式转换功能。工具类采用缓存机制优化性能,已在多个大数据项目中验证其稳定性和扩展性。核心功能包括:对象属性复制、Map转对象、属性获取/设置等,适用于需要频繁进行对象转换的场景。

feelerltt的专栏 335

BeanUtils 工具类

BeanUtils 是用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中 运用BeanUtils工具类      1.定义水果类,属性为品种(kind),价钱(price);      2.定义测试类Test,定义Map集合,将name和age赋值,存入到Map集合,然后利用BeanUtils将数

qq_38049721的博客 420

BeanUtils工具类,基于Spring框架。

BeanUtils工具类用于高效地复制对象,使用到cglib的BeanCopier。 import org.springframework.cglib.beans.BeanCopier; import org.springframework.util.CollectionUtils; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; import jav

lin451791119的博客 1140
上一篇: 近期bug修复及开发问题小结
下一篇: 我的创作纪念日
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值