java 中 Enum包含String类型的值可以有很好的应用,定义ErrorCode以及在数据库交互中都很方便。
- 使用Enum做error code字典,定义包含String值的Enum:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public enum CODE { OK("OK"), ERROR("ERROR") ;
private final String msg;
CODE(final String msg) { this.msg = msg; }
public String getMsg() { return this.msg; }
@Override public String toString() { return this.msg; } }
|
用values()方法遍历enum包含的所有value
1 2 3 4 5
| for (CODE code : CODE.values()) { System.out.println(code.name() + ":" + code.getMsg()); }
|
可以通过自定义的方法获取单个Enum的value
1 2 3
| Sytem.out.println(CODE.OK.getMsg());
|
通过name获取Enum类型的value
1 2
| System.out.println(CODE.valueOf("OK"));
|
也可以自定义方法通过value获取Enum的name
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
| public enum CODE { OK("OK"), ERROR("ERROR") ;
private final String msg;
CODE(final String msg) { this.msg = msg; }
public String getMsg() { return this.msg; }
@Override public String toString() { return this.msg; }
private static final Map<String, CODE> lookup = new HashMap<>(); static { for (CODE code : CODE.values()) { lookup.put(code.getMsg() : code); } }
public static CODE get(String msg) { return loopup.get(msg); } }
|
使用也很简单
1 2 3
| CODE code = CODE.get("OK");
|
- 包含String的Enum在JPA中用作和数据库交互
1 2 3 4 5 6 7 8 9 10 11 12 13
| public enum QuestionClassify { SINGLE("SINGLE"), MULTI("MULTI"), ESSAY("ESSAY"), EVALUATION("EVALUATION");
private String type;
RoleClassify(String type) { this.type = type; } }
|