目录
一、Objects的equals
准备工作:先写一个Person类,后面创建对象调方法的时候用:
import java.util.Objects; //注意导包:Objects类
public class Person {
private String name; //写一个属性
//写一个Objects类的equals方法,后面要用
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
eg:我们先写一个普通的equals:
public static void main(String[] args) {
Person p1 = null; //p1为空
Person p2 = new Person();
System.out.println(p1.equals(p2));
运行结果出错!为空指针异常!
用 Objects的equals来写一下:
Person p1 = null;
Person p2 = new Person();
System.out.println(Objects.equals(p1,p2));
运行结果正常比较:
我们进入方法看一下源码:
其实就是做了一个对第一个参数非空的判断,返回true的条件:
(a与b地址相同)或(a不等于空 且 a的值等于b的值)
总结:普通的equals与Objects的equals的区别:Objects的equals可以判断空指针;从而避免空指针异常的问题。
二、Objects的isNull
Person p1 = null; //p1为空
Person p2 = new Person();
System.out.println(Objects.isNull(p1));
System.out.println(Objects.isNull(p2));
运行结果:
进入方法源码:如果对象为空则返回true否则返回false
总结:用于判断对象是否为空
三、Objects的requireNonNull
Person p1 = null; //p1为空
System.out.println(Objects.requireNonNull(p1));
运行结果:异常
进入方法源码:如果传入的对象为空则抛出异常!
总结:此方法用于限制传入对象必须为有效对象,比如,我的方法需要处理数据,如果外部不传入数据则无法使用此方法,所以如果外部传入的对象没有有效数据,则中断程序。