1 package org.kuali.common.util; 2 3 public class ObjectUtils { 4 5 /** 6 * <p> 7 * This method returns <code>true</code> if the <code>toString()</code> methods on both objects return matching strings AND both objects are the exact same runtime type. 8 * </p> 9 * 10 * <p> 11 * Returns <code>true</code> immediately if <code>main==other</code> (ie they are the same object). 12 * </p> 13 * 14 * <p> 15 * Returns <code>false</code> immediately if <code>other==null</code> or is a different runtime type than <code>main</code>. 16 * </p> 17 * 18 * <p> 19 * If neither one is <code>null</code>, and both are the exact same runtime type, then compare the <code>toString()</code> methods 20 * </p> 21 * 22 * @param main 23 * The object <code>other</code> is being compared to. 24 * @param other 25 * The object being examined for equality with <code>main</code>. 26 * 27 * @throws NullPointerException 28 * If <code>main</cod> is <code>null</code> or <code>main.toString()</code> returns <code>null</code> 29 */ 30 public static boolean equalsByToString(Object main, Object other) { 31 32 // Main can't be null 33 if (main == null) { 34 throw new NullPointerException("main is null"); 35 } 36 37 // They are the same object 38 if (main == other) { 39 return true; 40 } 41 42 if (notEqual(main, other)) { 43 return false; // Don't bother comparing the toString() methods 44 } else { 45 return main.toString().equals(other.toString()); 46 } 47 } 48 49 /** 50 * Return true if <code>main</code> is definitely not equal to <code>other</code>. More precisely, if <code>other</code> is null <b>OR</b> a different runtime type than 51 * <code>main</code>, return true 52 * 53 * @param main 54 * The object <code>other</code> is being compared to. 55 * @param other 56 * The object being examined for equality with <code>main</code>. 57 * 58 * @throws NullPointerException 59 * If <code>main</cod> is <code>null</code> 60 */ 61 public static boolean notEqual(Object main, Object other) { 62 // Main can't be null 63 if (main == null) { 64 throw new NullPointerException("main is null"); 65 } else if (other == null) { 66 return true; 67 } else { 68 return main.getClass() != other.getClass(); 69 } 70 } 71 }