سؤال

لماذا لا يمكن الوصول إلى المتغيرات النهائية في المتغيرات ثابتة. في وقت الترجمة ببساطة تبديل تبديل بشكل مباشر مع قيمهم لذلك، ينبغي أن يسمح للاستخدام حتى في أساليب ثابتة

لماذا هذا التقييد ؟؟؟

هل كانت مفيدة؟

المحلول

وليس كل المتغيرات final هي الثوابت وقت الترجمة. يمكن أن تكون بديلا المتغيرات static final إلا عن طريق مترجم كثوابت وقت الترجمة. ويستخدم معدل final في حالات معينة فقط لضمان CONST-صحة .

وstatic طرق يمكن أن المتغيرات لا الوصول غير ثابت مثل تلك المتغيرات يمكن أن يكون لها قيم مختلفة لحالات مختلفة من نفس الفئة.

نصائح أخرى

وثابت = في الصف.

و= النهائية لا يتغير انها قيمة (ولكن من كل مثيل إذا لم يكن ثابت).

حسب examply يمكنك القيام به:

public class Weird
{
private static long number = System.getTimeInMilis();
private final long created = System.getTimeInMilis();
}

وفي كل مرة تقوم بإنشاء كائن غريب أنها سوف تحتوي على قيمة مختلفة عن التي تم إنشاؤها.

ولكن هل قيمة Weird.number تكون هذه هي المرة عندما تم تحميل الطبقة.

إذا كنت طالبا لماذا طريقة static لا يمكن الوصول إلى متغير مثيل final (على افتراض [صحيح] أن المتغيرات عضو النهائية يتم تعيين دائما إلى قيم حرفية أو ثابت في القانون)، التي لحالات مختلفة من علبة الطبقة تحتوي على قيم مختلفة لنفس المتغير المثال final (التي يمكن وضعها، على سبيل المثال، عن طريق منشئ). وهناك طريقة static ليس لديه علم بأي حالة بعينها من الصف، ويمكن فقط الوصول المتغيرات static final.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top