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注意到!谢谢!