当前位置: 首页 > news >正文

ObjectUtils 类的方法

public static boolean nullSafeEquals(Object o1, Object o2) {

  //两个数据内存地址相等,或者为空
  if (o1 == o2) {
    return true;
  }

  //有一个地址数据为空
  if (o1 == null || o2 == null) {
    return false;
  }

  //都不会空
  if (o1.equals(o2)) {
    return true;
  }

  //应用Arrays.equlas 方法实现 数组元数据的比较,漂亮
  if (o1.getClass().isArray() && o2.getClass().isArray()) {
    if (o1 instanceof Object[] && o2 instanceof Object[]) {
      return Arrays.equals((Object[]) o1, (Object[]) o2);
    }
    if (o1 instanceof boolean[] && o2 instanceof boolean[]) {
      return Arrays.equals((boolean[]) o1, (boolean[]) o2);
    }
    if (o1 instanceof byte[] && o2 instanceof byte[]) {
      return Arrays.equals((byte[]) o1, (byte[]) o2);
    }
    if (o1 instanceof char[] && o2 instanceof char[]) {
      return Arrays.equals((char[]) o1, (char[]) o2);
    }
    if (o1 instanceof double[] && o2 instanceof double[]) {
      return Arrays.equals((double[]) o1, (double[]) o2);
    }
    if (o1 instanceof float[] && o2 instanceof float[]) {
      return Arrays.equals((float[]) o1, (float[]) o2);
    }
    if (o1 instanceof int[] && o2 instanceof int[]) {
      return Arrays.equals((int[]) o1, (int[]) o2);
    }
    if (o1 instanceof long[] && o2 instanceof long[]) {
      return Arrays.equals((long[]) o1, (long[]) o2);
    }
    if (o1 instanceof short[] && o2 instanceof short[]) {
      return Arrays.equals((short[]) o1, (short[]) o2);
    }
  }
    return false;
}

 

未完待续

转载于:https://www.cnblogs.com/forstudy556/p/3553673.html

相关文章:

  • VMware-WorkStation 序列号(转)
  • OGRE On iPhone ----Ogre的iPhone基础模版框架源代码分析
  • 为Web页中的Table对象创建一个映射表
  • 基于V4L2的视频驱动开发(2)
  • IMP-00017: 由于 ORACLE 的 20001 错误
  • java中的内部类
  • [IE9] IE9 Beta崩溃问题解决方案
  • ASP.NET MVC Filters 4种默认过滤器的使用【附示例】
  • 总结程序设计几大原则
  • 使用tcpdump抓取HTTP包
  • 客户端的测试
  • 云存储离我们还有多远?
  • CDbConnection failed to open the DB connection
  • 读入图像文件并显示【C#图像处理学习笔记】
  • 分页存储过程(三)
  • 《Java编程思想》读书笔记-对象导论
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • C++类中的特殊成员函数
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript设计模式之工厂模式
  • js
  • JS专题之继承
  • Mocha测试初探
  • Python语法速览与机器学习开发环境搭建
  • React16时代,该用什么姿势写 React ?
  • Vim Clutch | 面向脚踏板编程……
  • 初识MongoDB分片
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 二维平面内的碰撞检测【一】
  • 规范化安全开发 KOA 手脚架
  • 思否第一天
  • 以太坊客户端Geth命令参数详解
  • Python 之网络式编程
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​flutter 代码混淆
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​第20课 在Android Native开发中加入新的C++类
  • ​人工智能书单(数学基础篇)
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (BFS)hdoj2377-Bus Pass
  • (LeetCode) T14. Longest Common Prefix
  • (十一)图像的罗伯特梯度锐化
  • (数据结构)顺序表的定义
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)jdk与jre的区别
  • ../depcomp: line 571: exec: g++: not found
  • .Net 6.0 处理跨域的方式
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET BackgroundWorker
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net6使用WebSocket与前端进行通信
  • .net图片验证码生成、点击刷新及验证输入是否正确