ต่อไปนี้มาจาก Wikipedia คำอธิบายของการตรวจสอบประเภทคงที่และการตรวจสอบประเภทแบบไดนามิก:
•การตรวจสอบประเภทคงที่: กระบวนการตรวจสอบความปลอดภัยประเภทตามซอร์สโค้ดของโปรแกรม
•การตรวจสอบประเภทแบบไดนามิก: กระบวนการตรวจสอบความปลอดภัยประเภทในระหว่างการทำงานของโปรแกรม
Java ใช้การตรวจสอบประเภทคงที่เพื่อวิเคราะห์โปรแกรมในระหว่างการรวบรวมเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาดประเภท แนวคิดพื้นฐานคือไม่ปล่อยให้ข้อผิดพลาดพิมพ์เกิดขึ้นในระหว่างการรันไทม์
โค้ดต่อไปนี้เป็นตัวอย่างหลังจากทำความเข้าใจคุณจะเข้าใจได้ดีขึ้นว่าการตรวจสอบประเภท Java คงที่ใช้งานได้อย่างไร
ตัวอย่างรหัส
สมมติว่าเรามีชั้นเรียนต่อไปนี้ A และ B และ B สืบทอด A.
คลาส A {a me () {return this;} โมฆะสาธารณะ doa () {system.out.println ("ทำ");}} คลาส B ขยาย A {โมฆะสาธารณะ dob () {system.out.println ("do b");}}}}} ก่อนอื่นการโทรไปที่ใหม่ b (). ฉัน () กลับมาอีก? คัดค้าน A หรือ B?
วิธีการ ME () ได้รับการประกาศให้ส่งคืนวัตถุดังนั้นในระหว่างการรวบรวมคอมไพเลอร์เท่านั้นที่รู้ว่ามันส่งคืนวัตถุ A อย่างไรก็ตามมันส่งคืนวัตถุ B ในระหว่างการรันไทม์เพราะ B สืบทอดวิธีการของ A และส่งคืนตัวเอง
การตรวจสอบประเภทคงที่ทำงานอย่างไร?
บรรทัดของรหัสต่อไปนี้ผิดกฎหมายแม้ว่าวิธีการ DOB () จะถูกเรียกโดยวัตถุ B ปัญหาคือประเภทการอ้างอิงคือ A. เมื่อรวบรวมอุปกรณ์คอมไพเลอร์ไม่ทราบประเภทจริงดังนั้นเขาจึงถือว่าเป็นประเภท A.
// unlegalNew b (). me (). dob ();
ดังนั้นเฉพาะรหัสต่อไปนี้เท่านั้นที่สามารถเรียกได้:
// legalneW b (). me (). doa ();
อย่างไรก็ตามเราสามารถใช้ประเภทของมันเป็น B ดังนี้:
// ถูกกฎหมาย ((b) ใหม่ b (). me ()). dob ();
ต่อไปเราเพิ่มคลาส C:
คลาส C ขยาย {โมฆะสาธารณะ dobad () {system.out.println ("do c");}} จากนั้นคำสั่งรหัสต่อไปนี้จะผ่านการตรวจสอบประเภทคงที่:
// ถูกกฎหมาย ((c) ใหม่ b (). me ()). bebad ();
คอมไพเลอร์ไม่ทราบประเภทจริง แต่ข้อยกเว้นจะถูกโยนลงในระหว่างการรันไทม์เนื่องจากประเภท B ไม่สามารถแปลงเป็นพิมพ์ C;
ข้างต้นเป็นคำอธิบายโดยละเอียดของตัวอย่างว่าการตรวจสอบประเภทคงที่ใน Java แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!