vererbung - java enum werte zuweisen




Warum erhalte ich eine Enum-Konstante, die für eine Fallbezeichnung nicht qualifiziert werden kann? (2)

Da Sie ein Objekt vom Typ EnumType und die einzig möglichen Werte dafür die EnumType sind, müssen Sie diese Konstanten nicht erneut innerhalb des Switches qualifizieren. Der case OtherEnumType.ENUM1: ist sowieso case OtherEnumType.ENUM1: .

Warum kann der folgende Code nicht kompiliert werden, während die case-Anweisung in geändert wird

case ENUM1: doSomeStuff();

funktioniert?

public enum EnumType
{
    ENUM1, ENUM2, ENUM3;

    void doSomeStuff()
    {
        switch(this)
        {
        case EnumType.ENUM1: doSomeStuff();
        }
    }
}

Dies ist nicht wirklich eine Antwort auf Ihre Frage, aber wenn Sie über Code verfügen, der vom Enum-Wert abhängt, können Sie in Ihrem Enum auch eine abstrakte Methode erstellen, die für jeden Wert überladen wird:

public enum EnumType {
    ENUM1 {
        @Override
        public void doSomeStuff() {
            // do something
        }
    },
    ENUM2 {
        @Override
        public void doSomeStuff() {
            // do something else
        }
    };

    public abstract void doSomeStuff();
}




enums