ฉันกำลังใช้ Eclipse เพื่อสร้าง.equals()และ.hashCode()มีตัวเลือกที่มีข้อความว่า "ใช้ 'อินสแตนซ์ของ' เพื่อเปรียบเทียบประเภท" ค่าเริ่มต้นสำหรับตัวเลือกนี้จะไม่ถูกตรวจสอบและใช้.getClass()เพื่อเปรียบเทียบประเภท มีเหตุผลใด ๆ ที่ฉันจะชอบ.getClass()มากกว่าinstanceof?
โดยไม่ต้องใช้instanceof:
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
การใช้instanceof:
if (obj == null)
return false;
if (!(obj instanceof MyClass))
return false;
ฉันมักจะตรวจสอบinstanceofตัวเลือกจากนั้นเข้าไปข้างในและลบเครื่องหมาย " if (obj == null)" (มันซ้ำซ้อนเนื่องจากวัตถุ null จะล้มเหลวเสมอinstanceof) มีเหตุผลใดบ้างที่เป็นความคิดที่ไม่ดี?
x instanceof SomeClassเป็นเท็จถ้าเป็นxnullดังนั้นไวยากรณ์ที่สองไม่จำเป็นต้องมีการตรวจสอบเป็นโมฆะ