枚举类中的整数和字符串

时间:2016-04-27 05:31:27

标签: java enums

我有一个问题,关于如何在枚举类中放置整数值和字符串。我正在使用枚举的值存储在数据库中。我想要的是这样的东西

public enum MyList {
    1,
    2,
    3,
    APPLE,
    BANANA
}

但我在值'1'中有错误,它说

Syntax error on token "1", Identifier expected

我在这里搜索了答案,但我发现他们试图根据用户输入的整数来获取枚举值。我需要的是直接将值123APPLEBANANA存储在数据库中。

甚至可以在枚举中组合整数和字符串吗?任何帮助或建议都将是一个很大的帮助。非常感谢!

PS。我对编程很新,所以我很难用正确的术语来解释这个问题。请使用简单的条款回复!谢谢!

编辑:

如果1是所述类中唯一的整数,则错误就像我上面所说的那样。但在我添加23之后,public enum MyList {中有一条红线并说

Syntax error on token(s), misplaced construct(s)

5 个答案:

答案 0 :(得分:4)

Oracle's documentation中所述,

  

枚举类型是一种特殊的数据类型,它允许变量   一组预定义的常量。

常量的名称必须与任何变量满足相同的rules,因此它不能是整数。

style 约定是将常量写为大写,并用下划线分隔。

答案 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
}