使用枚举优先于int或char常量:
public enum Action {
DoNotPrint,
Print,
PrintAndForward,
PrintAndReply,
Forward,
Reply
}
public class OutgoingMessage {
private Action action;
如果需要将char与操作关联,请执行以下操作:
public enum Action {
DoNotPrint('0'),
Print('1'),
PrintAndForward('2'),
PrintAndReply('3'),
Forward('F'),
Reply('R');
private static Map map = new HashMap() {{
for (Action action : Action.values()) {
put(action.getChar(), action);
}
}};
private final char c;
private Action(char c) {
this.c = c;
}
public char getChar() {
return c;
}
public static Action parse(char c) {
if (!MapHolder.map.containsKey(c))
throw new IllegalArgumentException("Invalid char: " + c);
return MapHolder.map.get(c);
}
}
以下是使用parse方法的方法:
public static void main(String[] args) {
System.out.println(Action.parse('2')); // "PrintAndForward"
System.out.println(Action.parse('x')); // throws IllegalArgumentException
}