Objects

有空發表於2024-11-14

概述

Objects 是一個工具類, 提供了一些方法去完成一些功能.

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 方法. 
        // 如果沒有重寫, 比較地址值, 如果重寫了, 就比較屬性值. 
    }
}
Objects
圖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
    }
}
Objects
圖1

相關文章