فيما يلي من ويكيبيديا ، شرح لفحص النوع الثابت والتحقق من النوع الديناميكي:
• فحص النوع الثابت: عملية التحقق من سلامة نوع التحقق بناءً على الكود المصدري للبرنامج ؛
• فحص النوع الديناميكي: عملية التحقق من سلامة نوع أثناء تشغيل البرنامج ؛
تستخدم Java فحص النوع الثابت لتحليل البرنامج أثناء التجميع لضمان عدم وجود أخطاء في النوع. الفكرة الأساسية هي عدم السماح بحدوث أخطاء الكتابة أثناء وقت التشغيل.
الرمز التالي هو مثال ، بعد فهمه ، ستفهم بشكل أفضل كيف يعمل فحص نوع Java Static.
مثال رمز
لنفترض أن لدينا الطبقات التالية ، A و B ، و Bernes A.
الفئة A {a me () {return this ؛} public void doa () {system.out.println ("do a") ؛}} class B. أولاً ، ماذا ستعود الدعوة إلى New B (). ME ()؟ الهدف أ أو ب؟
تم الإعلان عن طريقة ME () لإرجاع كائن ما ، لذلك أثناء التجميع ، يعرف المترجم فقط أنه يعيد كائن A. ومع ذلك ، فإنه يعيد كائن B أثناء وقت التشغيل لأن B يرث طريقة A ويعيد نفسه.
كيف يعمل فحص النوع الثابت؟
السطر التالي من التعليمات البرمجية غير قانوني ، حتى لو تم استدعاء الطريقة DOB () من قبل كائن B. المشكلة هي أن نوع المرجع الخاص به هو A. عند تجميع الجهاز ، فإن المترجم لا يعرف نوعه الحقيقي ، لذلك يعامله كنوع A.
// infarlenew b (). me (). dob () ؛
لذلك ، يمكن استدعاء الرمز التالي فقط:
// LegalNew B (). Me (). doa () ؛
ومع ذلك ، يمكننا إلقاء نوعه على B ، على النحو التالي:
// Legal ((b) new b (). me ()). dob () ؛
بعد ذلك ، نضيف فئة C:
يمتد الفئة C على {public void dobad () {system.out.println ("do c") ؛}} بعد ذلك ، سيتم تمرير بيان الكود التالي من النوع الثابت:
// Legal ((c) new b (). me ()). bebad () ؛
لا يعرف المترجم نوعه الحقيقي ، ولكن سيتم إلقاء استثناء أثناء تشغيل وقت التشغيل لأنه لا يمكن تحويل النوع B إلى النوع C ؛
ما سبق هو التفسير التفصيلي لأمثلة حول كيفية إجراء فحص النوع الثابت في Java الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!