Object 類中的公共方法詳解
- 1、clone() 方法
- 2、equals(Object obj) 方法
- 3、hashCode() 方法
- 4、getClass() 方法
- 5、wait() 方法
- 6、notify() 和 notifyAll() 方法
| 💖The Begin💖點點關注,收藏不迷路💖 |
在 Java 中,Object 類是所有類的超類(或稱為父類)。它包含了一些重要的公共方法,這些方法為所有 Java 對象提供了基礎的行為。下面我們將詳細探討這些公共方法。
1、clone() 方法
clone() 方法是 Object 類中的一個保護方法,用于創建并返回此對象的一個拷貝。 這個拷貝是一個 淺拷貝,意味著如果對象中的字段是引用類型,那么拷貝的只是引用地址,而不是引用的對象本身。
注意:只有實現了 Cloneable 接口的類才可以調用 clone() 方法,否則會拋出 CloneNotSupportedException 異常。
public class MyClass implements Cloneable { @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); }
} MyClass original = new MyClass();
MyClass cloned = (MyClass) original.clone();
2、equals(Object obj) 方法
equals() 方法在 Object 類中用于比較兩個對象是否相等。 在 Object 類中,equals() 方法的默認實現是比較兩個對象的引用是否相等,這與 == 操作符的行為是一致的。
但是,在實際開發中,我們經常需要比較對象的內容是否相等,因此子類通常會重寫 equals() 方法。
@Override
public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; MyClass other = (MyClass) obj; // 比較對象的字段是否相等 return /* 比較字段的邏輯 */;
}
3、hashCode() 方法
hashCode() 方法返回該對象的哈希碼值。 哈希碼在哈希表中非常重要,因為哈希表通過哈希碼來快速定位對象在表中的位置。當重寫 equals() 方法時,通常也需要重寫 hashCode() 方法,以確保相等的對象具有相同的哈希碼。
@Override
public int hashCode() { // 生成哈希碼的邏輯 return /* 哈希碼值 */;
}
4、getClass() 方法
getClass() 方法是一個 final 方法,用于返回表示此 Object 運行類(由哪個類創建的實例)的 Class 對象。
Class<?> clazz = obj.getClass();
5、wait() 方法
wait() 方法使當前線程等待該對象的鎖,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者等待的時間超過了指定的時間。當前線程必須是該對象的擁有者,也就是具有該對象的鎖。
synchronized (obj) { while (/* 等待條件 */) { obj.wait(); // 等待,直到其他線程調用 notify 或 notifyAll } // 處理等待后的邏輯
}
6、notify() 和 notifyAll() 方法
notify() 方法喚醒在此對象監視器上等待的單個線程(如果有的話)。
notifyAll() 方法喚醒在此對象監視器上等待的所有線程。這兩個方法也必須在同步塊或同步方法中調用。
synchronized (obj) { // 改變等待條件 obj.notify(); // 喚醒一個等待的線程 // 或 obj.notifyAll(); // 喚醒所有等待的線程
}

| 💖The End💖點點關注,收藏不迷路💖 |