概述
Objects 是一個工具類, 提供了一些方法去完成一些功能.
Objects 類中的常見的成員方法:
圖1 Objects 類中的常見的成員方法
equals 方法
程式示例:
Javabean 類:
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
測試類:
public class Demo1 {
public static void main(String[] args) {
// 1. 建立學生類的物件
Student s1 = null;
Student s2 = new Student("zhangsan", 23);
// 2. 比較兩個物件的屬性值是否相同
boolean result = s1.equals(s2); // NullPointerException: Cannot invoke "Object_demo.Student.equals(Object)" because "s1" is null
System.out.println(result);
}
}
Java 中, 不能用 null 呼叫方法.
改寫:
public class Demo1 {
public static void main(String[] args) {
// 1. 建立學生類的物件
Student s1 = null;
Student s2 = new Student("zhangsan", 23);
// 2. 比較兩個物件的屬性值是否相同
if (s1 != null) {
boolean result = s1.equals(s2);
System.out.println(result);
} else {
System.out.println("呼叫者為空"); // 呼叫者為空
}
}
}
改寫測試類:
import java.util.Objects;
public class Demo1 {
public static void main(String[] args) {
// 1. 建立學生類的物件
Student s1 = null;
Student s2 = new Student("zhangsan", 23);
// 2. 比較兩個物件的屬性值是否相同
boolean result = Objects.equals(s1, s2);
System.out.println(result); // false
// 細節:
// 1. 方法的底層會判斷 s1 是否為 null, 如果為 null, 直接返回 false
// 2. 如果 s1 不為 null, 那麼就利用 s1 再次呼叫 equals 方法
// 3. 此時 s1 是 Student 型別, 所以最終還是會呼叫 Student 中的 equals 方法.
// 如果沒有重寫, 比較地址值, 如果重寫了, 就比較屬性值.
}
}
圖1
isNull, nonNull 方法
程式示例:
public class Demo1 {
public static void main(String[] args) {
// public static boolean isNull(Obiect obi) 判斷物件是否為 null, 為 nul1 返回 true, 反之返回 false
Student s3 = new Student();
Student s4 = null;
System.out.println(Objects.isNull(s3)); // false
System.out.println(Objects.isNull(s4)); // true
System.out.println(Objects.nonNull(s3)); // true
System.out.println(Objects.nonNull(s4)); // false
}
}
圖1