Saturday 26 July 2014

Examples for enum type

The enum keyword is used to declare a new enumeration type. This keyword has been introduced since Java 5. The declaration syntax for an enum type is as follows


enum
<name> {
    <enum_constant_1>,
    <enum_constant_2>,
    ...
    <enum_constant_n>
    <enum_constructor>
    // other variables & methods as usual
}


An enum constant can be declared as follows:
<constant_name>[(arguments)] [{class body}]

Rules for enum type




  • An enum constant specifies an instance of the enum type.
  • An enum constant can be optionally followed by a list of arguments and a class body. The class body is an anonymous class which conforms to rules of anonymous classes and:
    • It cannot have any constructor.
    • It cannot have any abstract methods.
    • Instance methods declared in the class body are only accessible if they override accessible methods declared in the enclosing enum type.
  • An enum type cannot be declared abstract or final.
  • The Enum<E> is the direct superclass of an enum type.
  • An enum type can be only declared inside class level, same as class level or in a separate source file. It cannot be declared inside a method or an inner class.
  • An enum type can have constructors, methods and variables just like a regular Java class.

Examples for enum type

A simplest enum type declared inside a class:

class Foo {
    enum DayOfWeek {MON, TUE, WED, THU, FRI, SAT, SUN};
}

A simple enum type declared in a separate Java file:


public enum ErrorCode {
    LOW, HIGH, SEVERE
}

An enum type which contains constructor, method and variable:

enum Day {
    MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6), SUN(7);
    Day(int dayNumber) {
        this.dayNumber = dayNumber;
    }
    private int dayNumber;
    public int getDayNumber() {
        return this.dayNumber;
    }
}

An enum type with class body for each enum constant:

enum Priority {
    LOW {
        int getPriorityNumber() {
            return 0;
        }
    },
    NORMAL {
        int getPriorityNumber() {
            return 1;
        }
    },
    HIGH {
        int getPriorityNumber() {
            return 2;
        }
    },
    SEVERE {
        int getPriorityNumber() {
            return 3;
        }
    };
    abstract int getPriorityNumber();
}



No comments:

Post a Comment