Java 枚举类中的整数和字符串
关于如何在枚举类中放置整数值和字符串,我遇到了一个问题。我正在使用要存储在数据库中的枚举值。我想要的是这样的东西Java 枚举类中的整数和字符串,java,enums,Java,Enums,关于如何在枚举类中放置整数值和字符串,我遇到了一个问题。我正在使用要存储在数据库中的枚举值。我想要的是这样的东西 public enum MyList { 1, 2, 3, APPLE, BANANA } 但是我在值“1”中有一个错误,它说 Syntax error on token "1", Identifier expected 我在这里搜索了答案,但我发现他们试图根据用户输入的整数获取枚举值。我需要的是直接将值1、2、3、APPLE和BANANA
public enum MyList {
1,
2,
3,
APPLE,
BANANA
}
但是我在值“1”中有一个错误,它说
Syntax error on token "1", Identifier expected
我在这里搜索了答案,但我发现他们试图根据用户输入的整数获取枚举值。我需要的是直接将值1
、2
、3
、APPLE
和BANANA
存储在数据库中
甚至可以在枚举中组合整数和字符串吗?任何帮助或建议都会大有帮助。非常感谢
另外,我对编程非常陌生,所以我很难用正确的术语来解释这个问题。请回复使用简单的条款!谢谢大家!
编辑:
如果1
是所述类中唯一的整数,则错误与我上面所说的相同。但是在我添加了2
和3
之后,它在public enum MyList{
中有一条红线,并显示
Syntax error on token(s), misplaced construct(s)
如中所述
枚举类型是一种特殊的数据类型,它使变量能够
一组预定义的常量
常量的名称必须满足与任何变量相同的条件,因此它不能是整数
样式约定是将常量写成大写,单词之间用下划线分隔。如中所述
枚举类型是一种特殊的数据类型,它使变量能够
一组预定义的常量
常量的名称必须满足与任何变量相同的条件,因此它不能是整数
样式约定是将常量写成大写,单词之间用下划线分隔。Enum是一种实例数量有限的类,其名称为大写字母。将数字写成大写字母:
public enum MyList {
ONE,
TWO,
THREE,
APPLE,
BANANA
}
Enum是一种实例数量有限的类,其名称为大写字母。请将数字改为大写:
public enum MyList {
ONE,
TWO,
THREE,
APPLE,
BANANA
}
枚举是一种特殊的数据类型,它只包含大写的常量值,如
public enum myList{
苹果
香蕉
}
因此,所有这些常量都是变量名,不能以数字开头(如1APPLE as var name,变量可以以字母或下划线开头)。记住如何在java中命名变量。枚举是特殊的数据类型,只包含大写的常量值,如
公共枚举myList{
苹果
香蕉
}
因此,所有这些常量都是变量名,不能以数字开头(如1 apple as var name,变量可以以字母或下划线开头)。记住如何在java中命名变量。您可以创建如下自定义枚举类型
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();
}
}
您可以创建如下所示的自定义枚举类型
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();
}
}
您可以为需要它的各个枚举值重写toString(),如下所示:
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
}
public static MyList fromValue(String v) {
for (MyList e: MyList.values()) {
if (e.toString().equals(v)) {
return e;
}
}
throw new IllegalArgumentException(v);
}
缺点是必须始终使用myEnumVal.toString()
来获取枚举的字符串表示形式,而不是myEnumVal.name()
。如果需要字符串到MyList的转换,可以添加如下静态函数:
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
}
public static MyList fromValue(String v) {
for (MyList e: MyList.values()) {
if (e.toString().equals(v)) {
return e;
}
}
throw new IllegalArgumentException(v);
}
您可以为需要它的各个枚举值重写toString(),如下所示:
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
}
public static MyList fromValue(String v) {
for (MyList e: MyList.values()) {
if (e.toString().equals(v)) {
return e;
}
}
throw new IllegalArgumentException(v);
}
缺点是必须始终使用myEnumVal.toString()
来获取枚举的字符串表示形式,而不是myEnumVal.name()
。如果需要字符串到MyList的转换,可以添加如下静态函数:
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
}
public static MyList fromValue(String v) {
for (MyList e: MyList.values()) {
if (e.toString().equals(v)) {
return e;
}
}
throw new IllegalArgumentException(v);
}
使用1、2和3。我希望这篇文章可以帮助你做你不可能做的事情。枚举是对象,而不是整数或字符串。像任何对象一样,它们可以选择包装其他值。但是你需要更具体地说明你需要什么来获得一个有用的示例。@Kajal我会检查它!谢谢!@shmosel注意到!谢谢!使用1、2和THREE.我希望这篇文章能帮助你,你想做的事情是不可能的。枚举是对象,不是整数或字符串。像任何对象一样,它们可以选择包装其他值。但你需要更具体地说明你需要什么来获得一个有用的示例。@Kajal我会检查它!谢谢!@shmosel注意到!谢谢!