object類

wen-210162704027發表於2024-08-01

object類

目錄
  • object類
    • equals(Object obj)方法
    • hashCode()方法:
    • toString()方法
    • clone()方法
    • getClass()方法
    • wait()和notify()方法

equals(Object obj)方法

用於比較兩個物件的等價性。預設實現比較的是物件的記憶體地址,但通常需要重寫這個方法以提供更有意義的比較邏輯。

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass that = (MyClass) obj;
    return Objects.equals(this.someField, that.someField);
}

hashCode()方法:

返回物件的雜湊碼值。通常與 equals 方法一起重寫,以確保如果兩個物件相等,它們必須有相同的雜湊碼。

@Override
public int hashCode() {
    return Objects.hash(someField1, someField2);
}

toString()方法

返回物件的字串表示。預設實現返回物件的類名和雜湊碼的無符號十六進位制表示。通常重寫這個方法以提供更有用的資訊。

@Override
public String toString() {
    return "MyClass{" +
           "someField='" + someField + '\'' +
           '}';
}

clone()方法

用於建立並返回物件的一個副本。Object 類的 clone() 方法是一個受保護的方法,需要在子類中重寫並提供公共的訪問。

@Override
protected Object clone() throws CloneNotSupportedException {
    return super.clone(); // 呼叫父類的 clone 方法
}

getClass()方法

返回物件的執行時類資訊。這個方法可以用來獲取物件的實際型別,即使物件是作為超類型別引用的。

Object obj = new MyClass();
Class<?> clazz = obj.getClass();
System.out.println(clazz.getName()); // 輸出 MyClass

wait()和notify()方法

這些方法是執行緒同步的基礎。wait() 使當前執行緒等待,直到另一個執行緒呼叫相同物件的 notify()notifyAll() 方法。

synchronized (this) {
    while (condition) {
        wait(); // 等待
    }
    // 條件滿足後執行操作
}

相關文章