首页 > 编程语言 >java两个对象属性比较

java两个对象属性比较

时间:2023-05-25 18:01:36浏览次数:30  
标签:obj1 obj2 return 对象 Object equals static java 属性


两个对象进行比较相等,有两种做法:
1,情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可。这里就不用说明
2.情况二:当除了情况一之外,还需知道是那个属性不同,那么就需要采用类反射,具体代码如下:

public static void main(String[] args) {
A a = new A();
a.setUserName("a");
a.setPassword("p");
a.setQq("q");
a.setWechat("w");

A b = new A();
    b.setUserName("a");
    b.setPassword("p");
    b.setQq("q");
    b.setWechat("ww");

    //只是比较两个对象是否相等,那么直接重写equals方法
    System.out.println( a.equals(b));

    try {
        Map<String, String> maps = compare( a, b );
        System.out.println();
    } catch (Exception e) {
        e.printStackTrace();
    }
}


public static <T> Map<String, String> compare(T obj1, T Obj2)
        throws Exception {

    Map<String, String> result = new HashMap<String, String>();

    Field[] fs = obj1.getClass().getDeclaredFields();
    for (Field f : fs) {
        f.setAccessible(true);
        Object v1 = f.get(obj1);
        Object v2 = f.get(Obj2);
        if( ! equals(v1, v2) ){
            result.put(f.getName(), String.valueOf(equals(v1, v2)));

        }
    }
    return result;
}

public static boolean equals(Object obj1, Object obj2) {

    if (obj1 == obj2) {
        return true;
    }
    if (obj1 == null || obj2 == null) {
        return false;
    }
    return obj1.equals(obj2);
}

标签:obj1,obj2,return,对象,Object,equals,static,java,属性
From: https://blog.51cto.com/chengzheng183/6350528

相关文章

  • IDEA下查看Java字节码(插件ByteCode Viewer)
    安装jclasslibbytecodeviewer插件 使用结果......
  • jenkins--构建传输jar包后启动java服务
    jenkins--构建传输jar包后启动java服务目标:针对单体java服务前置条件:jdk1.8日志切割cronologjdk1.8安装cronolog安装创建server.sh脚本文件#!/bin/bashJAR_PATH="/data/forwarder"#文件目录JAR_FILE="ruoyi-admin.jar"#文件名LOG_PATH="/data/forwarder/logs"#cro......
  • [Javascript] Generator with example - 1
    Differencebetween yieldand returnreturnset donetotrue/***Example1*/function*loggerator(){console.log("running");yield"paused";console.log("runningagain");return"stopped";}letlogger=......
  • Java的访问控制修饰符
    为什么使用访问控制修饰符使用访问控制修饰符,主要是为了实现信息的隐藏,在编写程序时,有些核心数据往往不希望被用户调用,需要控制这些数据的访问。对类成员访问的限制,有利于防止对象的误用。只允许通过一系列定义完善的方法来访问私有数据,就可以(通过执行范围检查)防止数据赋予不正......
  • java removeAll 返回2个数组的差集
    注意:removeAll不是差集importjava.util.ArrayList;publicclassImoocStudent{publicstaticvoidmain(Stringargs[]){ArrayList<String>objArray=newArrayList<String>();ArrayList<String>objArray2=newArrayList......
  • Netbeans开发—JAVA 作业之求素数
        JAVA课上的一个作业:求比给定的数小的所有素数并打印出来    准备工作:    1)用Netbeans新建一个JavaApplication     2)创建文件目录(根据个人习惯创建文件目录),我的目录如下:        3)创建本工程的JAVA文件:Prime.java              ......
  • javascript prototype and class
    js中的prototype绝对是js的一个重要知识点,有点像delegate的模式,和oop对象形式还是有些差别的,尽管可以做同样的事情。简要学习可以参见:https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes关于js的class和java的语法很像,参见:https://develope......
  • el-input的maxlength属性在number类型时需要特殊处理
    maxlength在开发中,输入框一定要限制长度,之前在开发中都没注意过输入字符串的时候直接使用maxlength就可以了但是type是number的时候,maxlength就不起作用了.number默认情况下,不管用户输入字符串还是数字,在获取的值都是字符串.number可以将字符串转换成数字但是我自己测试......
  • Fdog系列(二):html写完注册页面之后怎么办,用java写后台响应呀。
    文章目录1.前言2.创建javaweb项目3.创建Server4.解决中文乱码问题5.响应后台数据目录Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。所有文章源码已整体打包上传至github,求星星!1.前言接着第一篇用html完成了注册页面,第二篇,我们来完成后台数据处理,需要用......
  • java 定义不固定长度的数组
    在Java中,我们可以使用ArrayList来定义不固定长度的数组,因为ArrayList内部使用了一个动态数组来存储元素。ArrayList<Integer>intList=newArrayList<Integer>();intList.add(1);intList.add(2);intList.add(3);intList.a......