我有一个问题,关于如何在枚举类中放置整数值和字符串。我正在使用枚举的值存储在数据库中。我想要的是这样的东西
public enum MyList {
1,
2,
3,
APPLE,
BANANA
}
但我在值'1'中有错误,它说
Syntax error on token "1", Identifier expected
我在这里搜索了答案,但我发现他们试图根据用户输入的整数来获取枚举值。我需要的是直接将值1
,2
,3
,APPLE
和BANANA
存储在数据库中。
甚至可以在枚举中组合整数和字符串吗?任何帮助或建议都将是一个很大的帮助。非常感谢!
PS。我对编程很新,所以我很难用正确的术语来解释这个问题。请使用简单的条款回复!谢谢!
编辑:
如果1
是所述类中唯一的整数,则错误就像我上面所说的那样。但在我添加2
和3
之后,public enum MyList {
中有一条红线并说
Syntax error on token(s), misplaced construct(s)
答案 0 :(得分:4)
答案 1 :(得分:4)
您可以创建如下所示的自定义枚举类型
public enum MyList{
ONE(1), TWO(2), THREE(3), APPLE("apple"), BANANA("banana");
Object myItem;
private MyList(Object myItem) {
this.myItem= myItem;
}
public static MyList customValueOf(Object value) {
for(MyList v : values())
if(v.myItem.equalsIgnoreCase(value)) return v;
throw new IllegalArgumentException();
}
}
答案 2 :(得分:2)
枚举是特殊数据类型,仅包含大写的常量值,如public enum myList{
APPLE,
BANANA
}
因此所有这些常量都是变量名,不能用数字开始名称(比如1APPLE作为var名称,变量可以以字母或下划线开头)。记住如何在java中命名变量。
答案 3 :(得分:2)
您可以为需要它的单个枚举值覆盖toString(),如下所示:
button.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(MainActivity.java,AboutUs.class);
startActivity(intent);
//This intent will send you on next activity
}
});
缺点是你总是必须使用public enum MyList {
E1 { @Override public String toString() { return "1"; } },
E2 { @Override public String toString() { return "2"; } },
E3 { @Override public String toString() { return "3"; } },
APPLE,
BANANA
}
来获取枚举的字符串表示而不是myEnumVal.toString()
。如果您需要String to MyList转换,您可以添加如下静态函数:
myEnumVal.name()
答案 4 :(得分:1)
Enum是一种类,其实例数量有限,以大写字母命名。用数字写出数字代替:
public enum MyList {
ONE,
TWO,
THREE,
APPLE,
BANANA
}