找类中字段属性不同工具类

🍓 简介:java系列技术分享(👉持续更新中...🔥)

🍓 初衷:一起学习、一起进步、坚持不懈

🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏

🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击
[

文章目录

一、问题描述

已经开发过的接口,现在实体类同事改了,但是自己的接口入参DTO没有改,字段有很多,一个个比较浪费时间,因为偶尔在云桌面中,无法复制出来交给AI比对,所以提供以下工具类,进行快速找不同,比如实体有某个字段,但 DTO 没有

二、找类中字段不同工具类

java 复制代码
import cn.hutool.core.util.ReflectUtil;
import java.lang.reflect.Field;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.Arrays;

public class FieldCompareMain {

    public static void main(String[] args) {
        // 要比较的两个类
        Class<?> entityClass = BdVehicle.class;
        Class<?> dtoClass = VehicleImageDTO.class;

        // 获取所有字段名(不包含父类,如需包含可改用 getFields)
        Set<String> entityFields = Arrays.stream(ReflectUtil.getFields(entityClass))
                .map(Field::getName)
                .collect(Collectors.toSet());

        Set<String> dtoFields = Arrays.stream(ReflectUtil.getFields(dtoClass))
                .map(Field::getName)
                .collect(Collectors.toSet());

        // 找出实体有但 DTO 没有的字段
        Set<String> missingInDto = entityFields.stream()
                .filter(f -> !dtoFields.contains(f))
                .collect(Collectors.toSet());

        // 找出 DTO 有但实体没有的字段
        Set<String> missingInEntity = dtoFields.stream()
                .filter(f -> !entityFields.contains(f))
                .collect(Collectors.toSet());

        System.out.println("========== 字段对比结果 ==========");
        System.out.println("实体类: " + entityClass.getSimpleName());
        System.out.println("DTO类: " + dtoClass.getSimpleName());
        System.out.println();

        System.out.println("【实体有,DTO没有的字段】(" + missingInDto.size() + "个):");
        missingInDto.forEach(f -> System.out.println("  - " + f));

        System.out.println();
        System.out.println("【DTO有,实体没有的字段】(" + missingInEntity.size() + "个):");
        missingInEntity.forEach(f -> System.out.println("  - " + f));

        if (missingInDto.isEmpty() && missingInEntity.isEmpty()) {
            System.out.println();
            System.out.println("✅ 两个类的字段完全一致!");
        }
    }
}

输入要比较的两个类,查看执行结果

相关推荐
别动我齐刘海7 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
code2cat8 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe8 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码8 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling9 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用9 小时前
Java Web 7-10
java·servlet
蜗牛互联网11 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
SL_staff11 小时前
运维救火实录:钉钉考勤API变更引发工资计算异常,我们用JVS-Logic可视化逻辑引擎实现分钟级热修复
java·mysql·全栈
SunnyDays101111 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java·查找文字·word 文档·高亮文字·正则匹配查找·模糊查找