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

有时候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())下用枚举没有用常量方便。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章