http://howtodoinjava.com/2012/12/07/guide-for-understanding-enum-in-java/


http://javahowto.blogspot.jp/2008/04/java-enum-examples.html


http://www.tutorialspoint.com/javaexamples/method_enum1.htm


Java Enum ValueOf Example


http://java67.blogspot.jp/2012/10/java-enum-valueof-example-how-to-use.html


4/13/2008

Java enum examples

Simple enum. The ; after the last element is optional, when this is the end of enum definition.
1
2
3
public enum Color {
 WHITE, BLACK, RED, YELLOW, BLUE;  //; is optional
}
Enum embedded inside a class. Outside the enclosing class, elements are referenced as Outter.Color.RED, Outter.Color.BLUE, etc.
1
2
3
4
5
public class Outter {
 public enum Color {
   WHITE, BLACK, RED, YELLOW, BLUE
 }
}
Enum that overrides toString method. A semicolon after the last element is required to be able to compile it. More details on overriding enum toString method can be found here.
1
2
3
4
5
6
7
8
9
public enum Color {
 WHITE, BLACK, RED, YELLOW, BLUE;  //; is required here.
 
 @Override public String toString() {
   //only capitalize the first letter
   String s = super.toString();
   return s.substring(0, 1) + s.substring(1).toLowerCase();
 }
}
Enum with additional fields and custom constructor. Enum constructors must be either private or package default, and protected or public access modifier is not allowed. When custom constructor is declared, all elements declaration must match that constructor.
1
2
3
4
5
6
7
8
9
10
11
12
public enum Color {
 WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);
 
 private int code;
 
 private Color(int c) {
   code = c;
 }
 
 public int getCode() {
   return code;
 }
Enum that implements interfaces. Enum can implement any interfaces. All enum types implicitly implements java.io.Serializable, and java.lang.Comparable.
1
2
3
4
5
6
7
8
public enum Color implements Runnable {
 WHITE, BLACK, RED, YELLOW, BLUE;
 
 public void run() {
   System.out.println("name()=" + name() +
       ", toString()=" + toString());
 }
}
A sample test program to invoke this run() method:
1
2
3
for(Color c : Color.values()) {
 c.run();
}
Or,
1
2
3
for(Runnable r : Color.values()) {
 r.run();
}
A more complete example with custom fields, constructors, getters, lookup method, and even a main method for quick testing:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.util.HashMap;
import java.util.Map;
 
public enum Status {
    PASSED(1, "Passed", "The test has passed."),
    FAILED(-1, "Failed", "The test was executed but failed."),
    DID_NOT_RUN(0, "Did not run", "The test did not start.");
 
    private int code;
    private String label;
    private String description;
 
    /**
     * A mapping between the integer code and its corresponding Status to facilitate lookup by code.
     */
    private static Map<Integer, Status> codeToStatusMapping;
 
    private Status(int code, String label, String description) {
        this.code = code;
        this.label = label;
        this.description = description;
    }
 
    public static Status getStatus(int i) {
        if (codeToStatusMapping == null) {
            initMapping();
        }
        return codeToStatusMapping.get(i);
    }
 
    private static void initMapping() {
        codeToStatusMapping = new HashMap<Integer, Status>();
        for (Status s : values()) {
            codeToStatusMapping.put(s.code, s);
        }
    }
 
    public int getCode() {
        return code;
    }
 
    public String getLabel() {
        return label;
    }
 
    public String getDescription() {
        return description;
    }
 
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("Status");
        sb.append("{code=").append(code);
        sb.append(", label='").append(label).append('\'');
        sb.append(", description='").append(description).append('\'');
        sb.append('}');
        return sb.toString();
    }
 
    public static void main(String[] args) {
        System.out.println(Status.PASSED);
        System.out.println(Status.getStatus(-1));
    }
}
To run the above example:
1
2
3
4
java Status
 
Status{code=1, label='Passed', description='The test has passed.'}
Status{code=-1, label='Failed', description='The test was executed but failed.'}

50 comments:

blank.gif
Shean said...

Seriously, this is a great post ;)

Been looking for almost 30min all over google for different enum examples and your single post showed them all, thanks alot ^^

b16-rounded.gif
Bhushan Bhangale said...

Good examples for understanding enum

blank.gif
Anonymous said...

This is an great INCORRECT post. Cannot do:

public enum Color {
WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);

private int code;

private Color(int c) {
code = c;
}

public int getCode() {
return code;
}
}