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(); // 等待
}
// 條件滿足後執行操作
}