ในระบบประเภทของ Java ทุกวัตถุมีทั้งประเภทเวลาคอมไพล์ (ประเภทการอ้างอิงที่ประกาศ) และประเภทรันไทม์ (คลาสจริงของวัตถุ) การทำความเข้าใจความแตกต่างนี้เป็นกุญแจสำคัญในการส่งประเภทที่ปลอดภัยและหลีกเลี่ยง ClassCastException
Upcasting — โดยนัยและปลอดภัย
ในระบบประเภทของ Java ทุกวัตถุมีทั้งประเภทเวลาคอมไพล์ (ประเภทการอ้างอิงที่ประกาศ) และประเภทรันไทม์ (คลาสจริงของวัตถุ) การทำความเข้าใจความแตกต่างนี้เป็นกุญแจสำคัญในการส่งประเภทที่ปลอดภัยและหลีกเลี่ยง ClassCastException