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