ฉันกำลังใช้ 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
เป็นเท็จถ้าเป็นx
null
ดังนั้นไวยากรณ์ที่สองไม่จำเป็นต้องมีการตรวจสอบเป็นโมฆะ