المتغيرات والأعضاء غير المهيأين في Java
خذ بعين الاعتبار المقتطف التالي:
public class TestClass { private String a; private String b; public TestClass() { a = "initialized"; } public void doSomething() { String c; a.notify(); // This is fine b.notify(); // This is fine - but will end in an exception c.notify(); // "Local variable c may not have been initialized" } }
على الرغم من عدم تهيئة كل من "b" و"c"، إلا أن المترجم يظهر خطأ في وقت الترجمة لـ "c" ولكن ليس لـ "b". ينبع هذا الاختلاف من قواعد اللغة لتهيئة متغيرات الحالة والمتغيرات المحلية.
متغيرات الحالة من نوع الكائن (مثل "a" و "b") تتم تهيئتها افتراضيًا إلى قيمة خالية عندما لا تتم تهيئتها بشكل صريح. ولهذا السبب فإن الوصول إلى "b.notify()" لا يؤدي إلى خطأ فوري، لأنه يعادل فعليًا "null.notify()". ومع ذلك، سيؤدي هذا الوصول في النهاية إلى تشغيل NullPointerException عند تنفيذ التعليمات البرمجية.
في المقابل، لا تتم تهيئة المتغيرات المحلية لنوع الكائن بشكل افتراضي. تؤدي محاولة الوصول إلى متغير محلي غير مهيأ، مثل "c"، إلى حدوث خطأ في وقت الترجمة مباشرةً. يضمن هذا المطلب الصارم أن يتم دائمًا تهيئة المتغيرات المحلية بشكل صحيح قبل استخدامها.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3