Enumeration
Wikipedia says "An enumeration of a collection of items is a complete, ordered listing of all of the items in that collection"
What is an Enumerated Type?
Enumerated Type is predefined set of constant values that form a group
This is available since JDK 1.5
Before the Enum was introduced, we can achieve similar thing by having a class with private constructor and public constant Object. Example shown below:
public  class State
{
    private State();
    public static final State START = new State();
    public static final State STOP= new State();
    public static final State  RUN= new State();
}
Enums in java 1.5
- All enums extends from java.lang.Enum
- Enum constants are by default public static
Example of Enum in JDK 1.5 and above:
enum State
{
     START (1),
     STOP (2),
     RUN (3);
     private int level;
     private State(int level)
     {
         this.level = level;
     }
}
1. use it in switch statements
switch(State)
{
 case START:
          ………….
 case STOP:
          ……….
 case RUN:
         ………..  
} 
2. the enums are constants final.
- It can be compared with ==
- State threadState = State.RUN; threadState== State.RUN is always true
3. Enum can over ride methods
enum State
    {
        START (1)
        {
            @Override
            public void log()
            {
                System.out.println("--STARTING--");
            }
        },
        STOP (2)
        {
            @Override
            public void log()
            {
                System.out.println("--STOPPING--");
            }
        },
        RUN (3)
        {
            @Override
            public void log()
            {
                System.out.println("--RUNNING--");
            }
        };
        private int level;
        private State(int level)
        {
            this.level = level;
        }
        public abstract void log();
    }
Importants methods of java.lang.enum
| 
Returns the name
  of this enum constant, exactly as declared in its enum declaration. | 
State.START.name()    returns "START" | |
| 
Returns the
  ordinal of this enumeration constant (its position in its enum declaration,
  where the initial constant is assigned an ordinal of zero). | 
State.START.ordinal()
  returns 1 | |
| 
Returns the enum
  constant of the specified enum type with the specified name. | 
State.valueof(State,
  "START") returns State.START Object | |
| 
T[] Values() | 
Fetch the list of
  enum  constants declared  | 
State.values();
  returns State[] | 
What is EnumSet?
This is a set implementation to be used in the enum types. All of the elements in an enum set must come from a single enum type that is specified,static EnumSet<state> set = EnumSet.range(STOP, RUN);
What is EnumMap?
This implements the Map Interface. It takes Enum as the keyComplete Example -
Download StateTester.javapackage test;
import java.util.EnumMap;
import java.util.EnumSet;
public class StateTester
{
    enum State
    {
        START (1)
        {
            @Override
            public void log()
            {
                System.out.println("--STARTING--");
            }
        },
        STOP (2)
        {
            @Override
            public void log()
            {
                System.out.println("--STOPPING--");
            }
        },
        RUN (3)
        {
            @Override
            public void log()
            {
                System.out.println("--RUNNING--");
            }
        };
        private int level;
        static EnumSet<State> set = EnumSet.range(STOP, RUN);
        private State(int level)
        {
            this.level = level;
        }
        public abstract void log();
    }
    public static void main(String args[])
    {
        System.out.println("Name : "+State.START.name()); // OUTPUT : START
        System.out.println("Ordinal : "+State.RUN.ordinal()); // OUTPUT : 2
        System.out.println("valueOf: "+ State.valueOf("STOP")); // OUTPUT : STOP
        System.out.println("Enum.valueOf : "+ Enum.valueOf(State.class, "START")); // OUTPUT : START
        
        System.out.println("Enumset.contains :"+ State.set.contains(State.START)); //false
        System.out.println("Enumset.contains :"+ State.set.contains(State.STOP)); //true
        System.out.println("values : "+ State.values());   // array [Ltest.StateTester$State;@152b6651
        EnumMap<State, String> stateEnum = new EnumMap<State,String>(State.class);
        stateEnum.put(State.RUN, "run");
        System.out.println("ENUM MAP: "+stateEnum.get(State.RUN));
        System.out.println("ENUM MAP null: "+stateEnum.get(State.START));
        
        System.out.println("wrong valueOf :  "+ State.valueOf("run")); // Exception in thread "main" java.lang.IllegalArgumentException: No enum const class test.StateTester$State.run
    }
}
Output from the above java file:
Name : START Ordinal : 2 valueOf: STOP Enum.valueOf : START Enumset.contains :false Enumset.contains :true values : [Ltest.StateTester$State;@6bbc4459 ENUM MAP: run ENUM MAP null: null Exception in thread "main" java.lang.IllegalArgumentException: No enum const class test.StateTester$State.run at java.lang.Enum.valueOf(Enum.java:196) at test.StateTester$State.valueOf(StateTester.java:1) at test.StateTester.main(StateTester.java:65)

 
VW88
ReplyDeleteAgen Slot
Movie