ObjectUtils.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package com.genersoft.iot.vmp.utils;
  2. import java.util.Arrays;
  3. public class ObjectUtils {
  4. public static boolean nullSafeEquals(Object o1, Object o2) {
  5. if (o1 == o2) {
  6. return true;
  7. } else if (o1 != null && o2 != null) {
  8. if (o1.equals(o2)) {
  9. return true;
  10. } else {
  11. return o1.getClass().isArray() && o2.getClass().isArray() && arrayEquals(o1, o2);
  12. }
  13. } else {
  14. return false;
  15. }
  16. }
  17. private static boolean arrayEquals(Object o1, Object o2) {
  18. if (o1 instanceof Object[] && o2 instanceof Object[]) {
  19. return Arrays.equals((Object[])((Object[])o1), (Object[])((Object[])o2));
  20. } else if (o1 instanceof boolean[] && o2 instanceof boolean[]) {
  21. return Arrays.equals((boolean[])((boolean[])o1), (boolean[])((boolean[])o2));
  22. } else if (o1 instanceof byte[] && o2 instanceof byte[]) {
  23. return Arrays.equals((byte[])((byte[])o1), (byte[])((byte[])o2));
  24. } else if (o1 instanceof char[] && o2 instanceof char[]) {
  25. return Arrays.equals((char[])((char[])o1), (char[])((char[])o2));
  26. } else if (o1 instanceof double[] && o2 instanceof double[]) {
  27. return Arrays.equals((double[])((double[])o1), (double[])((double[])o2));
  28. } else if (o1 instanceof float[] && o2 instanceof float[]) {
  29. return Arrays.equals((float[])((float[])o1), (float[])((float[])o2));
  30. } else if (o1 instanceof int[] && o2 instanceof int[]) {
  31. return Arrays.equals((int[])((int[])o1), (int[])((int[])o2));
  32. } else if (o1 instanceof long[] && o2 instanceof long[]) {
  33. return Arrays.equals((long[])((long[])o1), (long[])((long[])o2));
  34. } else {
  35. return o1 instanceof short[] && o2 instanceof short[] && Arrays.equals((short[]) ((short[]) o1), (short[]) ((short[]) o2));
  36. }
  37. }
  38. }