لا يمكن استخدام Ints Inters Static العام النهائي في بيان التبديل؟

StackOverflow https://stackoverflow.com/questions/1155409

  •  18-09-2019
  •  | 
  •  

سؤال

انا مرتبك. يحتوي الكود التالي على أخطاء ("..." يمثل التعليمات البرمجية المنفذة):

int byteOrder = ...;
switch (byteOrder)
{
    case HDF5Constants.H5T_ORDER_BE:
        return ByteOrder.BIG_ENDIAN;
    ...
}

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

final public static int H5T_ORDER_BE = H5.J2C( JH5T_ORDER_BE );

اعتقدت أنك تستطيع استخدام final public static int الثوابت كحالات في بيان التبديل. هل أنا مخطئ ؟؟؟

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

المحلول

من ما أظهرته H5T_ORDER_BE ليس ثابتا للجميع (الذي يجب أن يكون) - يتم تقييمه عند وقت التشغيل أثناء تهيئة الفصل. إذا تم تقييمها ثابتا مثل 123 (بدلا من ما يبدو أنه مكالمة طريقة ثابتة) ثم لن يشكو المحول البرمجي.

نصائح أخرى

أنت نكون خاطئ - ظلم - يظلم! :-)

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

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