定义可以在java中的switch语句中使用的#define之类的常量

时间:2011-10-04 09:24:46

标签: java android constants

我想定义一些常量,例如#define myXYZ 1,所以我也可以在switch语句中使用它们。

当我做经常建议的

public static final Integer myXYZ = 1;

case Constants.myXYZ:

我收到case expression must be constant

的编译器消息

解决这个问题的最佳方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:12)

只需将其更改为int即可。

public static final int myXYZ = 1;

这是因为案例值必须是常量表达式或枚举名称。来自JLS的section 15.28(常量表达式):

  

编译时常量表达式是表示基本类型值的表达式或不突然完成的字符串,仅使用以下[...]

组成

因此,int类型的表达式可以是常量表达式,但类型Integer的表达式不能。

如果这是一组作为一个概念本身有意义的值,那么枚举可能会更有意义。

答案 1 :(得分:3)

使用int

public static final int myXYZ = 1; 

或使用enum常量。

答案 2 :(得分:1)

如果你想在它们之间切换,最好设计它来代替使用枚举