java中enum字段需要持久化时的处理

来源:互联网 发布:电力组态软件 编辑:程序博客网 时间:2024/06/09 16:34
有时候enum定义的字段信息需要保存到数据库,但数据库中保存的不是字符串,而是数字。
例如:
public enum Color {      RED, GREEN, YELLOW;  }  

用Color.RED.toString(),返回的是字符串“RED”,而我们数据库中保存的是数字类型的:0代表RED,1代表GREEN,2代表YELLOW,
怎么办呢?这时,可以为每个枚举定义一个值,如下:
public enum Color {      RED(0), GREEN(1), YELLOW(2);      private Color(int value) {          this.value = value;      }      private int value;            public int value() {          return value;      }  } 

这样,就可以通过Color.RED.value()获取到要保存到数据库中的值。

编译器默认会添加一个如下的方法:
public static Color valueOf(String);

可以自己再写一个通过int参数(从数据库中查询到的)获取枚举的重载方法:
public static Color valueOf(int value) {          switch (value) {          case 0 :              return RED;          case 1 :              return GREEN;          case 2 :              return YELLOW;          default :              return null;          }  }

感觉,这种情况(用Color.RED.value())下用枚举没有用常量方便。
0 0
原创粉丝点击