我需要能够存储和检索从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