在对象比较的时候,经常需要判空,如果是数组比较,还需要遍历每个元素,
在jdk7中,提供了一个工具类Objects。
主要为提供空指针安全的equals、hash、toString等的相应方法。其类方法概要如下:
//判断两对象是否相等
public static boolean equals(Object a, Object b);

//深度比较两对象是否相等,用于数组等形式
public static boolean deepEquals(Object a, Object b);

//返回指定对象哈希值,为null返回0
public static int hashCode(Object o);

//返回指定数组哈希值,为null返回0
public static int hash(Object… values);

//返回对象的字符串格式,为null返回“null”字符串
public static String toString(Object o);

//返回对象的字符串形式,若为null,返回指定值
public static String toString(Object o, String nullDefault);

//用指定比较器比较两对象大小
public static int compare(T a, T b, Comparator<? super T> c);

//判断对象是否为null
public static boolean isNull(Object obj);

//判断对象是否不为null
public static boolean nonNull(Object obj);

举个例子:
直接判断 objetc a object b ,会存在其中任意一个为null的情况

如果使用 Objects.equals(a,b);
里面的实现为
jdk7的Objetcs工具类解析
如果a==b 则直接返回,如果a!=null 那就调用a.quals()方法进行比较。

这样的话,a b均为null时候返回true ,a为null b不为null时候返回false, 否则就返回a.equals的比较结果

覆盖到了所有情况。

再看可以比较数组的深比较
jdk7的Objetcs工具类解析

这里面用了
jdk7的Objetcs工具类解析

jdk7的Objetcs工具类解析

可以看到还是循环去比较了每一个数组元素 ,但是比自己写方便了很多。

除了这些还有获取对象的hashcode的方法,如果对象为null,则返回0

相关文章: