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

定义可以在java中的switch语句中使用的#define等常量,java,android,constants,Java,Android,Constants,我想定义一些常量,比如#define myXYZ 1,这样我也可以在switch语句中使用它们 当我这样做的时候,我经常建议 public static final Integer myXYZ = 1; 及 我得到的编译器消息是,case表达式必须是常量 解决这个问题的最佳方法是什么 谢谢 使用int: public static final int myXYZ = 1; 或者使用enum常量。只需将其更改为int即可: public static final int myXYZ = 1;

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

当我这样做的时候,我经常建议

public static final Integer myXYZ = 1;

我得到的编译器消息是,
case表达式必须是常量

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

谢谢

使用
int

public static final int myXYZ = 1; 

或者使用
enum
常量。

只需将其更改为
int
即可:

public static final int myXYZ = 1;
这是因为大小写值必须是常量表达式或枚举名称。从JLS(常量表达式)的开始:

编译时常量表达式是一个表示基元类型的值或字符串的表达式,该值或字符串不会突然完成,并且只使用以下[…]组成

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


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

如果您想在它们之间切换,最好将其设计为使用枚举来代替。

如果所有问题都那么简单,编程将是一项非常枯燥的工作。:-)请记住,“define myXYZ 1”不是一个常量,而是一个预处理器宏。在现代C或C++中,你被封为写const int Myxz=1;´
public static final int myXYZ = 1;