คลาสเอ { }
คลาส B ขยาย A { }
วัตถุ o1 = A ใหม่();
วัตถุ o2 = B ใหม่();
o1 อินสแตนซ์ของ A => จริง
o1 อินสแตนซ์ของ B => เท็จ
o2 instanceof A => จริง // <================ ที่นี่
o2 อินสแตนซ์ของ B => จริง
o1.getClass().equals(A.class) => จริง
o1.getClass().equals(B.class) => เท็จ
o2.getClass().equals(A.class) => false // <=============== ที่นี่
o2.getClass().equals(B.class) => จริง
getClass() จะมีประโยชน์เมื่อคุณต้องการให้แน่ใจว่าอินสแตนซ์ของคุณไม่ใช่คลาสย่อยของคลาสที่คุณกำลังเปรียบเทียบ
一个非常完美的เท่ากับ方法的写法:
// ต้องคืนค่าเท็จหากพารามิเตอร์ที่ชัดเจนเป็นโมฆะ
ถ้า (otherObject == null) ส่งคืนค่าเท็จ;
// ถ้าคลาสไม่ตรงกันก็จะเท่ากันไม่ได้
ถ้า (getClass() != otherObject.getClass()) กลับเท็จ;
// ตอนนี้เรารู้แล้วว่า otherObject เป็นพนักงานที่ไม่เป็นค่าว่าง
พนักงานอื่น ๆ = (พนักงาน) otherObject;
// ทดสอบว่าเขตข้อมูลมีค่าเหมือนกันหรือไม่
return name.equals(other.name) && เงินเดือน == other.salary && HireDay.equals(other.hireDay);
-