我需要能夠存儲和檢索從SQLite數據庫,我已經解決了包裝類和枚舉的聯合使用枚舉,但我覺得它的設計很差。存儲和檢索SQLite與Java中的枚舉
每當我想添加一個新項目到枚舉列表中,我必須將它添加到三個不同的地方。
枚舉必須包含:
- 一個int(或字符串)來表示它
- 文本字符串,提供有關枚舉本身
- 的方法進一步文本以某種方式從數據庫中恢復其狀態
目前,它實現這樣的:
public class items
{
public enum types {
FOO(0),
BAR(1),
BAZ(2);
private final int _value;
types(int value){_value = value;}
public int value(){return _value;}
}
public static types Get(int i)
{
switch(i)
{
case 0:
return types.FOO;
case 1:
return types.BAR;
case 2:
return types.BAZ;
default:
return null;
}
}
public static String Get(Typer type)
{
switch(type)
{
case FOO:
return "This is foo!";
case BAR:
return "This is bar!";
case BAZ:
return "This is baz!";
default:
return "No good!";
}
}
}
有沒有更好的方法來處理這個問題?
但如果你打算把枚舉存儲到字符串中,你千萬不要改變枚舉值的名字..每一個都有它的優點和缺點 – yeahman
我想使用序數更危險,因爲我們可以很容易地添加一個新的枚舉類型之間。但改名字的可能性要小一些。那麼多數民衆贊成在我的感受,我可能是錯誤的 –
@RahulVerma只是與測試覆蓋如果重要 - 沒有風險。但是存儲單個「int」值通常比字符串更有效。 – kan