سؤال

لدي التالية التعداد:

public enum Status implements StringEnum{ 

    ONLINE("on"),OFFLINE("off");

    private String status = null;

    private Status(String status) {
        this.status = status;
    }

    public String toString() {
        return this.status;
    }

    public static Status find(String value) {
        for(Status status : Status.values()) {
            if(status.toString().equals(value)) {
                return status;
            }
        }

        throw new IllegalArgumentException("Unknown value: " + value );

    }
}

هل من الممكن لبناء StringEnum واجهة للتأكد من أن كل التعداد قد تجد () ، toString() و منشئ ؟

شكرا

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

المحلول

ليس من الممكن تحديد إما منشئات أو أساليب ثابتة في واجهة.جيد ومختصر تفسير, تحقق من هذه المادة: لا أساليب ثابتة في واجهات

نصائح أخرى

Enums بالفعل valueOf() (بك تجد طريقة طريقة).و "toString()" هو جافا.لانغ.أسلوب كائن ، لذا ، سيكون على كل صف ، وبعبارة أخرى, لا يمكنك أن تجبر عليه!لا أستطيع أن أرى قيمة إنفاذ منشئ منذ المختلفة enums أن تكون التهيئة.

مع أطيب التحيات

  1. أساليب ثابتة لا يمكن تعريفها في واجهات
  2. منشئات لا يمكن تعريفها في واجهات
  3. toString ويعرف في java.lang.Object, تتطلب في واجهة لن يؤدي إلى خطأ ترجمة إذا كان الأسلوب ليست محددة.

لماذا تريد فرض البناء على أية حال ؟ لا يمكن إنشاء مثيلات جديدة enums في وقت التشغيل على أي حال (إلا ربما عبر بعض آلية التفكير).

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