"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يمرر "Null" إلى طريقة محملة في Java استدعاء الطريقة مع المعلمة "السلسلة"؟

لماذا يمرر "Null" إلى طريقة محملة في Java استدعاء الطريقة مع المعلمة "السلسلة"؟

نشر في 2025-03-04
تصفح:990

Why does passing `null` to an overloaded method in Java call the method with the `String` parameter?

عند إجراء استدعاء طريقة ، يحدد المترجم الأسلوب الزائد للاتصال بناءً على رقم وأنواع الوسائط الفعلية التي تم تمريرها.

طريقة الفراغ العام (كائن O) { System.out.println ("Object verion") ؛ } طريقة الفراغ العام (سلسلة S) { System.out.println ("إصدار السلسلة") ؛ } الفراغ الثابت العام (سلسلة args []) { MoneyCalc Question = new MoneyCalc () ؛ Question.Method (NULL) ؛ } }

السؤال:

لماذا تمرير قيمة خالية إلى طريقة طريقة التحميل الزائد استدعاء الطريقة (سلسلة)؟

الإجابة: إنها ليست قيمة لأي نوع معين ، ولكن يمكن تعيينها إلى متغير من أي نوع مرجع ، بما في ذلك الكائن والسلسلة. وفقًا لمواصفات لغة Java (JLS) ، يتم اختيار الحمل الزائد الأكثر تحديداً بناءً على قابلية تطبيقه وخصوصته. في هذه الحالة ، ينطبق NULL على كلتا الطريقتين حيث يمكن تعيينه لمتغيرات كل من أنواع الكائنات والسلسلة. في هذه الحالة ، يكون التحميل الزائد للأسلوب (السلسلة) أكثر تحديداً لأنه مصمم للتعامل مع وسيطات من نوع السلسلة فقط. يكون التحميل الزائد للأسلوب (الكائن) أكثر عمومية حيث يمكنه التعامل مع وسيطات كائن النوع أو أي من فئاته الفرعية. فئة MoneyCalc ، قد يحدث خطأ في التجميع. وذلك لأن أي طريقة (سلسلة) ولا طريقة (StringBuffer) ستكون أكثر تحديداً من الآخر في هذه الحالة ، مما يؤدي إلى غموض في اختيار الطريقة.
            
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3