Enum
Enum
//before enum :
class Week
{ public static final Week MON;
public static final Week TUE;
public static final Week WED;
}
ex :
enum Week
{ MON,TUE,WED; //public static final
}
class Test
{ public static void main(String[] args)
{ Week w1 = Week.MON;
Week w2 = Week.TUE;
Week w3 = Week.WED;
System.out.println(w1+" "+w2+" "+w3);
Week[] w = Week.values();
for (Week ww : w)
{ System.out.println(ww+" "+ww.ordinal());
}
}
}
Observation :
//enum code before compilation : Week.java
enum Week
{ MON,TUE,WED;
}
static
{ MON = new Week("MON", 0);
TUE = new Week("TUE", 1);
WED = new Week("WED", 2);
VALUES = (new Week[] {
MON, TUE, WED
});
}
}
package com.tcs.enumscons;
enum Fish
{ GOLD,STAR,CAT;
}
ex-6: Observation
case 1:Inside the enum if are declaring only constants these constants ends with
semicolon is optional.
enum Week
{ MON,TUE,WED
}
case 2 : Inside the enum if we are declaring constants along with some other
elements like constructor or method, in this case group of constants must be first
line must ends with semicolon.
enum Week
{ MON,TUE,WED;
Week()
{ System.out.println("0-arg cons");
}
}
ex-7:
Inside the enum it is possible to declare the
Varaibles
Methods
Constructors
instance blocks
static blocks
enum Week
{ MON,TUE(10),WED(10,20); //public static final
static
{ System.out.println("static block");
}
{ System.out.println("instance block");
}
Week()
{ System.out.println("0-arg constructor");
}
Week(int a)
{ System.out.println("1-arg constructor");
}
Week(int a,int b)
{ System.out.println("2-arg constructor");
}
public static void main(String[] args)
{ System.out.println("enum main method");
}
}
E:\>java Week
instance block
0-arg constructor
instance block
1-arg constructor
instance block
2-arg constructor
static block
enum main method
if the application contains static constants & static blocks then the execution
order is top to bottom.
first :static constants are executed :every constant is object : so instance block
& constructor executed.
second : static blocks are execcuted
ex-8:
enum Day
{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Test
{ public static void main(String args[])
{ Day day = Day.MONDAY;
switch(day)
{ case SUNDAY: System.out.println("sunday is fun day");
break;
case MONDAY: System.out.println("monday is lazy day");
break;
default: System.out.println("other day");
break;
}
}
}
in above example we are passing enum as switch argument so the case labels must be
enums constants.