Objects类提供了一些静态方法,可以对对象进行一些简单的处理,虽然说简单,但是直到1.7才有。看下代码:
- 两个equals:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
这个写法是不是很熟悉,平时在写代码过程中会经常写这样的判断语句,新增方法直接简化了很多。
public static boolean deepEquals(Object a, Object b) {
if (a == b)
return true;
else if (a == null || b == null)
return false;
else
return Arrays.deepEquals0(a, b);
}
相较于equals方法,增加了一个对数组的判断。
2.哈希码操作:
public static int hashCode(Object o) {
return o != null ? o.hashCode() : 0;
}
public static int hash(Object... values) {
return Arrays.hashCode(values);
}
3.toString:
public static String toString(Object o) {
return String.valueOf(o);
}
public static String toString(Object o, String nullDefault) {
return (o != null) ? o.toString() : nullDefault;
}
toString(Object o, String nullDefault)这个方法相较于toString(Object o)方法多了个非空判断,为空则使用默认值,非空则使用toString()。
- 比较
public static <T> int compare(T a, T b, Comparator<? super T> c) {
return (a == b) ? 0 : c.compare(a, b);
}
简洁优雅,一句话搞定,日常写代码时可以好好借鉴下。
- 判断非空
public static boolean isNull(Object obj) {
return obj == null;
}
public static boolean nonNull(Object obj) {
return obj != null;
}
小结:如果有用过google的Guava库,估计看到部分上述代码会非常熟悉,应该是官方收编的赶脚。这些方法多了很多非空的判断,同时将基本类型和引用类型的不同操作进行了统一封装(实际上就是调用时不用区分==
还是equals
),简化了平时的开发。