Objects类概述
在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。
常用方法
- public static boolean equals(Object a, Object b) :判断两个对象是否相等。
我们可以查看一下源码,学习一下:
public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); }
tips:
null是不能调用方法的,会抛出空指针异常NullPointerException 。在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。
代码举例
package ObjectsTest; import java.util.Objects; public class ObjectsEquals { public static void main(String[] args) { String s1 = null; String s2 = "张三"; boolean equals = Objects.equals(s1, s2); System.out.println("s1是否等于s2:" + equals);//s1是否等于s2:false } }
- public static T requireNonNull(T obj) :查看指定引用对象不是null。
查看源码发现这里对为null的进行了抛出异常操作:
public static <T> T requireNonNull(T obj, String message) { if (obj == null) throw new NullPointerException(message); return obj; }
代码举例:
package ObjectsTest; import java.util.Objects; public class ObjectsRequireNonNull { public static void main(String[] args) { getElement(null, 5); } //对方法参数进行非空判断 public static int getElement(int[] array, int index) { //对传递过来的参数进行合法性判断,判断是否为null /*if(obj == null){ throw new NullPointerException("传递的对象的值是null"); }*/ //Objects.requireNonNull(obj); Objects.requireNonNull(array, "传递的对象的值是null"); return array[index]; } }
代码执行后的结果