• 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;
    }

    未完待续

  • 相关阅读:
    王妃
    某个奇怪的引理 学习总结
    多项式求ln,求exp,开方,快速幂 学习总结
    第二类斯特林数 学习总结
    cojs QAQ的图论题 题解报告
    cojs QAQ的序列 解题报告
    QAQ OI生涯の最后一个月
    cojs 疯狂的字符串 题解报告
    【51Nod 1238】最小公倍数之和 V3
    【51Nod 1190】最小公倍数之和 V2
  • 原文地址:https://www.cnblogs.com/forstudy556/p/3553673.html
Copyright © 2020-2023  润新知