Enum with Customized Value in Java
直接上示例代码
public class EnumTest {
enum TrafficSignal
{
// This will call enum constructor with one
// String argument
RED("STOP"){
@Override
public String policeActionWhenNotFollowingRules() {
return "fine $50";
}
}, GREEN("GO") {
@Override
public String policeActionWhenNotFollowingRules() {
return "N/A";
}
}, ORANGE("SLOW DOWN") {
@Override
public String policeActionWhenNotFollowingRules() {
return "Warning";
}
};
// declaring private variable for getting values
private String action;
// getter method
public String getAction()
{
return this.action;
}
// enum constructor - cannot be public or protected
private TrafficSignal(String action)
{
this.action = action;
}
public abstract String policeActionWhenNotFollowingRules();
public static TrafficSignal getEnum(String value) {
for(TrafficSignal v : values())
if(v.getAction().equalsIgnoreCase(value)) return v;
throw new IllegalArgumentException();
}
}
public static void main(String[] args) {
// let's print name of each enum and there action
// - Enum values() examples
TrafficSignal[] signals = TrafficSignal.values();
for (TrafficSignal signal : signals)
{
// use getter method to get the value
System.out.println("name : " + signal.name() +
" action: " + signal.getAction() + " police: " + signal.policeActionWhenNotFollowingRules());
}
TrafficSignal.getEnum("SLOW DOWN");
}
}